.htaccess 仅当url中存在字符串时应用重写规则
我有URL,它将始终具有.htaccess 仅当url中存在字符串时应用重写规则,.htaccess,.htaccess,我有URL,它将始终具有http://www.example.com/global/但是在/global/之后可能会有城市的名称或特许经营权在城市或其他页面中 例如 http://www.example.com/global/name-of-city 或 http://www.example.com/global/frnachise-then-name-of-city RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENA
http://www.example.com/global/
但是在/global/
之后可能会有城市的名称
或特许经营权
在城市或其他页面中
例如
http://www.example.com/global/name-of-city
或
http://www.example.com/global/frnachise-then-name-of-city
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ products.php?city=$1 [L,QSA]
现在我已经为这两种情况写了一些规则&它们都起作用了
这就是我为像http://www.example.com/global/name-of-city
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ products.php?city=$1 [L,QSA]
下面是我为特许经营
包括URL所做的工作
RewriteRule ^franchise-management-.([\w-]+)/?$ franchise.php?city=$1 [L,QSA]
但问题是,只有在注释了第一条重写规则时,第二条规则才有效,否则将始终应用第一条规则
我需要设置一些条件,检查url是否包含特许经营
,然后执行特许经营的重写规则
,否则只执行第一个重写规则。尝试:
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^franchise-management/([\w-]+)/?$ franchise-management.php?city=$1 [L,QSA]
RewriteRule ^([\w-]+)/?$ products.php?city=$1 [L,QSA]
将
-.
替换为/
后无法工作。请您解释一下重写规则^-[L]
应该做什么?使用我的旧代码只需移动规则重写规则^([\w-]+)/?$products.php?city=$1[L,QSA]
最后一次做了trickAlso请添加一些说明,说明您为什么更改这些行RewriteCond%{REQUEST_FILENAME}-已重写COND%{REQUEST_FILENAME}-f
Thanks@AhmedRewriteCond%{REQUEST\u FILENAME}-d[OR]RewriteCond%{REQUEST\u FILENAME}-f RewriteRule^-[L]
是mod rewrite中的一个重要规则,它避免了无限循环错误,并在请求现有文件或目录时跳过下面的所有规则。顺便说一句,我在这里发布之前在apache上测试了代码,它工作得很好。