当前我的网址链接以这种方式显示
/news?lang=en
我如何制作RewriteRule以显示这样的URL
/news/en
这是我到目前为止尝试过的
RewriteRule ^?lang=(.*) /$1 [QSA]
直到结束时,我才真正了解.htaccess
答案 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服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。