Regex .htaccess另一页的相同重写规则不';行不通
我的.htaccess文件中有这几行Regex .htaccess另一页的相同重写规则不';行不通,regex,.htaccess,mod-rewrite,Regex,.htaccess,Mod Rewrite,我的.htaccess文件中有这几行 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)$ /account.php?PAGE=$1 [L] RewriteRule ^([^/]*)$ /pages.php?PAGE=$1 [L] 问题在于第二条规则,所以当我想访问pages.php时,它会跳到account.php 我该怎么办?您可以尝试以下方法: Rewri
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /account.php?PAGE=$1 [L]
RewriteRule ^([^/]*)$ /pages.php?PAGE=$1 [L]
问题在于第二条规则,所以当我想访问pages.php时,它会跳到account.php
我该怎么办?您可以尝试以下方法:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^account-([^/]+)$ account.php?PAGE=$1 [L]
RewriteRule ^pages-([^/]+)$ pages.php?PAGE=$1 [L]
因为两个重写正则表达式都是相同的,而且您也有一个L标志来中止进一步查看。所以我需要更改其中一个L标志吗?或者两者都有?你能举个例子说明哪些页面应该进入账户,哪些页面应该进入账户吗?重写模块无法神奇地猜出实际请求的是什么“页面”。您需要告诉它在什么情况下应该将请求重写为什么内部对象。对于这两个规则,您当前的匹配模式是相同的,这没有任何意义。那么:应该重写到account.php的请求与应该重写到pages.php的请求有何不同?一旦你能回答这个问题,你就可以实施一个有效的规则。你需要更具体一些。使用
RewriteCond
尝试REQUEST\u URI
。没有前缀。请参阅注释domain.com/something
->domain.com/pages.php?PAGE=something
(如果有一个前缀应该是第一个捕获组,那么只需要一个正则表达式)还RewriteCond
与RewriteRule
配对,这样第二个就不会与任何东西配对。