.htaccess mod_rewrite检查querystring var是否可用

时间:2012-12-18 05:20:07

标签: php .htaccess mod-rewrite

基本上我想重写我的网址,以便有时website.com/folder/我需要重写我的网址website.com/folder/page/

目前我只使用website.com/folder/,但无法检查是否有页面,如果我只在文件夹下创建另一个规则,则会给我一个空页面var,这打破了我的PHP。我与.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]

请帮助!

1 个答案:

答案 0 :(得分:1)

根据the RewriteRule docs,您应该撤消规则集中的规则顺序。因为在您的配置中,两个规则都具有相同的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]