我正在使用mod重写间接访问我网站根目录下的PHP文件。目前,我有类似的东西,

RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]

但我想用的是

RewriteRule ^(.*)$ /$1.php [L]

因此,每当我想在我的网站上添加新页面时,我都不必更新我的.htaccess文件。但问题是,它也会影响我的子目录。这使CSS,javascript,图像无法访问,因为它重定向到“/dir/example.png.php"。

那么这里最好的解决方案是什么?

有帮助吗?

解决方案

尝试此规则:

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* <*>.php [L]

其他提示

.htaccess 编辑为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]

启动重写引擎后,它将首先检查所请求的文件是否是系统上的实际文件,或者它是否实际上是一个目录。如果它不是那些,它将执行规则,在这种情况下,通过附加 .php 并提供服务来尝试找到该文件。

子目录,图像,CSS等都可以,因为一旦找到它们,它们就会退出重写。

我会使用过滤器来忽略子目录。这样,如果添加子文件夹,则只需更改它。如果文件夹中有图像或其他文件,则需要添加像 Sosh 这样的行

以下将忽略“图像”。和“js”子文件夹并重定向其他所有内容

RewriteRule   ^images*   -  [L]
RewriteRule   ^js*       -  [L]
RewriteRule   ^(.*)$     /$1.php   [L]

像这样的东西(注意!):

RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top