Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex .htaccess另一页的相同重写规则不';行不通_Regex_.htaccess_Mod Rewrite - Fatal编程技术网

Regex .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

我的.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

我该怎么办?

您可以尝试以下方法:

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
配对,这样第二个就不会与任何东西配对。