我的重写和目录索引存在问题
DirectoryIndex invite.php about.php account.php
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
让我们说about.php
在about文件夹中。当我访问www.url.com/about/about.php时,它运行正常。但是当我转到www.url.com/about/
时,会转到我的user.php
页面。当我转到www.url.com/about
时(不停止斜线),它会转到www.url/about/?u=about
任何人都可以帮助我吗?
与此同时,我正在尝试设置用户可以转到www.url.com/andrewliu
而不是www.url.com/user.php?u=andrewliu
的位置
我想我需要以某种方式修复我的结尾斜杠和重定向?
谢谢!
修改
我有这个
DirectoryIndex invite.php about.php account.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
RewriteCond %{QUERY_STRING} !^b= [NC]
RewriteRule ^(business)/(.*)$ /$1/index.php?b=$2 [L,NC,QSA]
答案 0 :(得分:6)
您需要添加一项检查,以查看请求是针对存在的文件还是目录。您需要在规则之前添加这些条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
这样,当您转到/about/
时,由于它是一个存在的目录,因此不会应用此规则。但是如果你去/andrewliu
,只要不是文件或目录就可以。