1

基本上我想重写我的网址,这样website.com/folder/有时我也需要它来重写website.com/folder/page/

目前我只使用它,website.com/folder/但无法让它检查是否有页面,如果我在文件夹下创建另一个规则,它会读取该规则,并给我一个空页面变量,这会破坏我的 php.ini 文件。我与 .htaccess 斗争,任何帮助将不胜感激。

这是我只使用文件夹但我不能包含页面的内容。

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|docs)/
RewriteRule ^([^/]*)/$ /?folder=$1 [QSA]

这是我试图让它与一个文件夹或一个文件夹和页面一起工作的内容

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)/$ /?folder=$1&page=$2 [L,QSA]

请帮忙!

4

1 回答 1

1

根据RewriteRule 文档,您应该反转规则集中的规则顺序。因为在您的配置中,两条规则都相同RewriteCond,所以最具体的规则(文件夹 + 页面)应该在顶部,最通用的规则应该在最后一条。如果第一个规则匹配时不匹配,则重写 URL,第二个规则永远不会匹配。此外,您可能希望删除文件夹 + 页面规则模式中的尾部正斜杠(假设模式中的第二组匹配页面而不是文件夹)。所以我认为整件事应该是这样的:

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/([^/]*)$ /?folder=$1&page=$2 [L,QSA]

RewriteCond %{REQUEST_URI} !^/?(css|js|images|html|doc)/
RewriteRule ^([^/]*)/$ /?folder=$1 [L, QSA]
于 2012-12-18T07:05:40.393 回答