Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
.htaccess 仅当url中存在字符串时应用重写规则_.htaccess - Fatal编程技术网

.htaccess 仅当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

我有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_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@Ahmed
RewriteCond%{REQUEST\u FILENAME}-d[OR]RewriteCond%{REQUEST\u FILENAME}-f RewriteRule^-[L]
是mod rewrite中的一个重要规则,它避免了无限循环错误,并在请求现有文件或目录时跳过下面的所有规则。顺便说一句,我在这里发布之前在apache上测试了代码,它工作得很好。