需要特定的.htaccess正则表达式替换

时间:2018-04-27 01:09:03

标签: regex .htaccess

我无法找到所需的regex命令以执行以下操作:

(1)在URL中搜索特定字符串(文件名的子字符串),即:

url.com/state/的城市 _someotherdata.php

OR  url.com/state/someotherdata_city_xy.php以及此格式的其他变体;

(2)将URL转换为以下格式:

url.com/state/的城市的index.php

可以做些什么呢?我试过这段代码



RewriteEngine On
RewriteCond %{QUERY_STRING} ([^\/?]+)\bozeman(?:\?|$) [NC]
RewriteRule ^http:\/\/url.com/montana/bozeman/? [L,R=301]




没有成功。这些数据将进入.htaccess文件。

提前致谢!

2 个答案:

答案 0 :(得分:0)

<IfModule mod_rewrite.c>
RewriteEngine On 
RewriteRule ^state\/([^/]*)([^/]*|$) /state/$1_someotherdata.php [L]
</IfModule>

答案 1 :(得分:0)

假设您正在与蒙大拿州的波兹曼合作。这将完全符合您的需要。

<IfModule mod_rewrite.c>
RewriteEngine  on
RewriteCond %{REQUEST_URI} !^.*(\/montana\/bozeman\/index.php)$
RewriteCond %{REQUEST_URI} ^.*(bozeman).*$
RewriteRule ^ /montana/bozeman/index.php [L,R=302,NE]
</IfModule>

您必须使用重写条件来排除您重定向到的URL,否则城市名称(本例中为Bozeman)与所指向的文件夹相同,将导致无限循环。