我在RewriteRule上看到的所有示例都类似于RewriteRule ^([a-z])$ index.php?example=$1
但是我有以下情况:我想要
example.com/en/something
重写为
example.com/something?lang=zh_CN
这适用于所有事物,代替了某事。 基本上,我只想要第一个参数为 en 或 ru 并重写到同一链接,但仅将其作为get参数传递
所以
example.com/en/something-else/anything
还重写为
example.com/something-esle/anything?lang=zh_CN
我该怎么做?
更新
我尝试了此RewriteRule ^(en|ru)/(.*)$ $2?lang=$1
,但是它说找不到该页面(它从我的应用程序而不是从服务器返回404页面)。
答案 0 :(得分:0)
我设法修复了它。 这是我现在的.htaccess:
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /avc0135/
#Language
RewriteRule ^(en|ru|bg)/(.*)$ $2?lang=$1
RewriteRule ^(en|ru|bg)$ ?lang=$1
#Language
RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]
RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
在对.htaccess的工作原理进行了几次搜索之后,我设法弄清了RewriteRule,此后的问题是#Language
块位于底部,我先于其他所有内容开始工作了。< / p>