.htaccess重写为相同的网址并传递get参数

时间:2018-11-27 09:44:17

标签: regex .htaccess mod-rewrite url-rewriting

我在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页面)。

1 个答案:

答案 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>