【发布时间】:2019-02-02 00:27:46
【问题描述】:
我正在尝试重写这种类型的 URL:
http://www.example.com/news/?lang=en
到
http://www.example.com/en-news
这也应该是递归的,这意味着:
http://www.example.com/news/world/?lang=en
应该改写为:
http://www.example.com/en-news/en-world/
到目前为止,我的 .htaccess 中有这个(用 arkasha 的 answer 修改):
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Rewrite language parameter
RewriteCond %{QUERY_STRING} (^|&)lang=(\w+)
RewriteRule /?(\w+)/?$ %1-$1 [END]
</IfModule>
但这似乎不起作用。
【问题讨论】:
-
RewriteRule ^([^/]+)$ http://www.example.com/%1-$1? [NC,L,R]应该将/news/?lang=en重定向到/en-news。 -
为什么要在每个目录组件前加上
en-? -
@anubhava 这是一个多语言网站,这就是在 url 中定义语言的方式。
-
好的,我理解多语言部分,但 URL 可以是
http://www.example.com/en/news/hello/world/而不是http://www.example.com/en-news/en-hello/en-world/
标签: regex .htaccess mod-rewrite url-rewriting