如何使.htaccess在当前目录而不是子目录上工作?
-
05-07-2019 - |
题
我正在使用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
不隶属于 StackOverflow