regex - example.com/en/blabla 的行为类似于 example.com/blabla?lang=en

标签 regex .htaccess mod-rewrite url-rewriting

example.com/en 的行为应与 example.com?lang=en

example.com/fr 的行为应与 example.com?lang=fr

example.com/XX 的行为应与 example.com?lang=XX

example.com/en/some-page.php 的行为应与 example.com/some-page.php?lang=en

我尝试过的东西失败了(但几乎就在那里):

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+([^/]+)/\?lang=([^\s&]+) [NC]
RewriteRule ^ /%2/%1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-z]{2})/([^/]+)/?$ $2/?lang=$1 [L,QSA]

example.com/en 显示 404 not found,但 example.com/en/index.phpexample.com/en/some-age。 phpexample.com 工作。

当它只是 example.com/en 时如何使其工作?

基本上我需要做的就是使 example.com/fr 的行为与 example.com/index.php?lang=fr 相同,这是唯一不起作用的情况(当转到 example.com/XX 时)。

最佳答案

您可以使用以下规则

RewriteEngine on
RewriteRule ^en/?$ /?lang-en [NC,L]
RewriteRule ^en/(.*?)\.php$ /$1.php?lang-en [NC,L]

关于regex - example.com/en/blabla 的行为类似于 example.com/blabla?lang=en,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217309/

相关文章:

java - 匹配此查询的正则表达式

python - 使用 Python 搜索 Lua 文件中的所有函数调用

javascript - 哪些 Javascript 正则表达式特性是 Javascript 独有的?

apache - htaccess 重写多个条件

regex - htaccess 仅重定向根域

regex - Fluentd 日志源格式 RegEX

.htaccess - 如何使用 .htaccess 文件或等效文件从以下 URL 中删除 "detail.html"?

regex - 阻止访问以 ~ 开头的文件夹及其所有文件夹/文件

php - 使用 htaccess 和 godaddy 将 HTTP 重定向到 HTTPS

apache - 当获取没有index.php的目录时,htaccess不会重写URL