hel*_*llo 1 php apache .htaccess mod-rewrite url-rewriting
我的rewriterule和目录索引有问题
DirectoryIndex invite.php about.php account.php
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
Run Code Online (Sandbox Code Playgroud)
可以说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]
Run Code Online (Sandbox Code Playgroud)
您需要添加一个检查以查看请求是针对存在的文件还是目录.您需要在规则之前添加这些条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]
Run Code Online (Sandbox Code Playgroud)
这样就可以了/about/
,因为它是一个存在的目录,因此不会应用此规则.但是如果你去/andrewliu
,那就是那个不是文件或目录.
归档时间: |
|
查看次数: |
2691 次 |
最近记录: |