1

我的重写规则和目录索引有问题

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]
4

1 回答 1

6

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

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

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

于 2012-09-01T01:37:27.137 回答