2012-03-05 111 views
1

我想用.htaccess重写一个url,并对它进行301重定向。.htaccess rewrite url [apache]

原始URL是这样的http://本地主机/实验室/ customer_132 /昆德=哥德堡-STAD

我希望它看起来像这样,重定向到

HTTP: // localhost/labs/customer_132 /?page_id = 11#goteborg-stad

试过不同的解决方案,但我没有得到它的窍门。

谢谢你的一切帮助!

+0

'page_id = 11'甚至没有在您的原始URI? – anubhava 2012-03-05 17:06:09

+0

是的,我知道什么字符串的最后部分“保持”,并改变了那部分behinde。它的ajax页面随着WordPress的变化。 – 2012-03-06 15:59:27

回答

1

您无法直接使用RewriteRule stament访问查询字符串;相反,您需要一个前面的RewriteCond,检查是否存在kund字段并获取其值。然后,您可以在RewriteRule中使用%N来使用任何捕获的值。

RewriteEngine On 

RewriteCond %{QUERY_STRING} kund=([\w\-]+) 
RewriteRule ^/labs/customer_132/ /labs/customer_132/?page_id=11#%1 [NC,R,L] 
+0

谢谢鲍罗廷,会试试!回来,如果它不工作:) – 2012-03-06 15:58:15

-1

您需要在.htaccess文件打开重写引擎:

RewriteEngine On 

然后,对于单个URL重定向以下应该工作(如果.htaccess文件是在根文件夹或服务器)。

编辑:如果查询字符串正好是kund=goteborg-stad(大写或小写),您需要检查查询字符串的条件。

RewriteCond %{QUERY_STRING} ^kund=goteborg-stad$ [NC] 
RewriteRule ^labs\/customer_132\/$ /labs/customer_132/?page_id=11#goteborg-stad [NE,R,L] 

NE告诉Apache不要逃避在重定向的#符号。

如果你想重定向选择不同的URL(例如,客户ID会改变吗?),那么你需要澄清。

+0

-1:一个'RewriteRule'就像*从不匹配,因为查询字符串在'RewriteRule'看到之前从URL中移除。 – Borodin 2012-03-05 17:23:36

+0

对不起,我是愚蠢的。使用%{QUERY_STRING}查看查询。然后像往常一样重定向,但要确保包含'[NE]',这样哈希不会编码为'%23',就像在你的答案中一样。 我还没有使用'kund'查询作为片段,因为它不清楚这是否需要,因为它们仍然会重定向到相同的'page_id'。 – Jack 2012-03-05 17:49:35