Mod rewrite RewriteCond查询字符串.htaccess

Mod rewrite RewriteCond查询字符串.htaccess,mod-rewrite,Mod Rewrite,编辑:我必须添加一些东西。首先,因为搜索引擎优化,我想更改url显示。如果我使用www访问我的网站没有问题,第二个链接出现,一切正常 但若我从链接中删除“www”,它将更改为第一个url,我不希望这样 我想换衣服 到 我怎么能做到 我试过了 RewriteCond %{QUERY_STRING} ^_route_=(.*)$ RewriteRule ^index\.php$ /%1 [R=301,L] 但它不起作用 我的.htaccess是 RewriteBase / RewriteRu

编辑:我必须添加一些东西。首先,因为搜索引擎优化,我想更改url显示。如果我使用www访问我的网站没有问题,第二个链接出现,一切正常

但若我从链接中删除“www”,它将更改为第一个url,我不希望这样

我想换衣服

我怎么能做到

我试过了

RewriteCond %{QUERY_STRING} ^_route_=(.*)$
RewriteRule ^index\.php$ /%1 [R=301,L]
但它不起作用

我的.htaccess是

RewriteBase /

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]

RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [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]

RewriteCond %{QUERY_STRING} ^route=common/home$
RewriteRule ^index\.php$ http://www.mysite.com? [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.mysite\.com$
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L] 

也许这就是你想要的:

RewriteRule ^(.*)$ index.php?route=$1 [L]
如果您必须直观地更改地址栏,请按照上面所述保留重写规则,并在任何输出之前将其放入
index.php

if(isset($_REQUEST['route']))
{
    header('Location: '.urlencode($_REQUEST['route']));
}

初始注释:我不是Apache大师,所以不要盲目依赖我的答案

如果需要,我会首先重定向到
www.

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{SERVER_NAME}/$1 [R=301,L]
然后使其转到
\u route\u
查询变量指示的页面

# if it is the index page...
RewriteCond %{REQUEST_URI} ^/(index\..+)?$ [NC]
# and if the query string starts with _route_=
RewriteCond %{QUERY_STRING} ^_route_=(.*)$
# redirect
RewriteRule ^(.*)$ http://%{SERVER_NAME}/%1? [R=301,L]

最后一行中的服务器变量
Server\u NAME
可能需要使用
HTTP\u HOST
更改谢谢,您击败了我,解决了这个错误;)添加时发生内部服务器错误:/@codeGenius你检查过编辑过的代码了吗?我错误地键入了
}
而不是
]
@BenM Yep,我在第一次尝试时没有看到这一点。现在我尝试编辑代码,但它不会更改url,页面内容返回404未找到。它不会直观地更改url。您如何尝试访问该页面(即,您在位置栏中键入了什么)?至于重定向到-
www.
,实际上我更喜欢将所有内容重定向到非
www.
域。
www.
版本一直存在,因为很多人接受了“网站地址以“www”开头”的培训。但我想引导人们远离那些胡说八道。(无论如何,这并不是什么大问题;你是否重定向到
www
,或者重定向到哪个域,对于实际问题来说无关紧要。)