如何使用htaccess更改语言参数url

时间:2019-01-16 15:06:03

标签: .htaccess

当前我的网址链接以这种方式显示

/news?lang=en 

我如何制作RewriteRule以显示这样的URL

/news/en 

这是我到目前为止尝试过的

RewriteRule ^?lang=(.*) /$1 [QSA]

直到结束时,我才真正了解.htaccess

1 个答案:

答案 0 :(得分:0)

我想说的是他正在寻找的东西:

RewriteEngine on
RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^/?news/(en|de|fr|es)/?$ /news?lang=$1 [END]

如果该规则导致“内部服务器错误”(http状态为500),则很可能是您操作了非常旧版本的apache http服务器。在这种情况下,要么更新服务器,要么尝试使用旧的[L]标志而不是[END]标志。 可能的工作原理相同,但这取决于其余的设置。在您的http服务器错误日志文件中,在这种情况下不支持的[END]标志上可以找到明确的提示。

该规则将在http服务器主机配置或动态配置文件(“ .htaccess”样式文件)中同样起作用。如果您确实需要使用这样的动态文件,请注意在主机配置中启用了它的解释功能,并且上述规则位于http主机的DOCUMENT_ROOT文件夹内的此类文件中。

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。