我的.htaccess文件是:
RewriteEngine on
RewriteRule (.*) index.php?_url=$1 [QSA,L]
在大多数情况下它完美无缺。但如果请求的网址作为真实文件夹存在,那就太疯狂了。
例如,当我请求/random
时,它会被重写为index.php?_url=random
,状态代码为200,但对于/static
(这是Web服务器上的现有目录),它会给出301重定向到/static/?_url=static
答案 0 :(得分:0)
将以下代码用于.htaccess
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
答案 1 :(得分:0)
如果要排除现有文件和目录的重写,请使用RewriteCond
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?_url=$1 [QSA,L]