我正在使用mod重写间接访问我网站根目录下的PHP文件。目前,我有类似的东西,
RewriteRule ^(blog|about|page3|etc)$ /$1.php [L]
但我想用的是
RewriteRule ^(.*)$ /$1.php [L]
因此,每当我想在我的网站上添加新页面时,我都不必更新我的.htaccess文件。但问题是,它也会影响我的子目录。这使得CSS,javascript,图像无法访问,因为它重定向到“/dir/example.png.php”。
那么这里最好的解决方案是什么?
答案 0 :(得分:3)
尝试此规则:
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule .* $0.php [L]
答案 1 :(得分:2)
将.htaccess
编辑为:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /$1.php [L]
启动重写引擎后,它将首先检查所请求的文件是否是系统上的实际文件,或者它是否实际上是一个目录。如果它不是那些,它将执行规则,在这种情况下,尝试通过附加.php
并提供该文件来查找文件。
子目录,图像,CSS等都可以,因为一旦找到它们,它们就会退出重写。
答案 2 :(得分:1)
我会使用过滤器来忽略子目录。这样,如果添加子文件夹,则只需更改它。如果文件夹中有图像或其他文件,则需要添加 Sosh 的行
以下将忽略“images”和“js”子文件夹并重定向其他所有内容
RewriteRule ^images* - [L]
RewriteRule ^js* - [L]
RewriteRule ^(.*)$ /$1.php [L]
答案 3 :(得分:-1)
像这样的东西(注意!):
RewriteRule !\.(js|ico|gif|jpg|png|css|zip|gz|html|xml)$ index.php