繁体   English   中英

htaccess重写程序和目录索引

[英]htaccess rewriterule and directoryindex

我的重写器和目录索引出现问题

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]

您需要添加检查以查看该请求是针对存在的文件还是目录。 您需要在规则之前添加以下条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([a-z0-9_-]+)/?$ /user.php?u=$1 [L]

这样一来,当您转到/about/ ,由于它是一个存在的目录,因此不会应用此规则。 但是,如果您转到/andrewliu ,那么只要它不是文件或目录,就可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM