基本上我想重写我的网址,以便有时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]
请帮助!
答案 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]