regex - 获取当前 url 并将其部分作为变量传递

标签 regex apache .htaccess mod-rewrite

我需要编写优化的 .htaccess 规则。我已经这样写了,他们正在工作

RewriteEngine on
RewriteRule ^city1-name-in-url/$ products.php?city=city1-name-in-url
RewriteRule ^city2-name-in-url/$ products.php?city=city2-name-in-url
RewriteRule ^city3-name-in-url/$ products.php?city=city3-name-in-url
RewriteRule ^city4-name-in-url/$ products.php?city=city4-name-in-url

这些规则的 url 是 http://www.example.com/global/city1-name-in-url/

我必须为 800 个城市编写这些规则,这使得网站变慢了。我想知道是否有办法获取部分 url 并在 RewriteRule

中使用它

例如

如果网址:http://www.example.com/global/any-city-name/

RewriteRule ^any-city-name/$ products.php?city=any-city-name

这可能吗?获取global之后的url部分,然后在rewrite rule中使用。

最佳答案

您可以在 /global/.htaccess 中使用此规则:

RewriteEngine On

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ products.php?city=$1 [L,QSA]

[\w-]+ 匹配 1 个或多个 [a-zA-Z0-9_-] 字符。

关于regex - 获取当前 url 并将其部分作为变量传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36283417/

相关文章:

.htaccess - 在 htaccess 中设置条件重定向

php - 删除子域的 .php 扩展名和 .htaccess 吗?

Python:如何打印正则表达式匹配的字符串?

javascript - LetsEncrypt 覆盖不同端口

php - 有没有办法只允许访问以前在 .htaccess 中列出的文件?

apache - 使用基本身份验证 (htaccess) 限制对特定 URL 的访问

Javascript - 如何在不干扰页面中 HTML 的情况下添加指向页面中单词的链接

java - 在 Java 中使用正则表达式分割文本

regex - 如何将字符串按 4 分组?

PHP:检测并显示 "Server overloaded"消息