使用htaccess文件重定向

时间:2012-07-26 12:50:31

标签: php .htaccess mod-rewrite

编辑:

我想重定向网址

至:www.example.com/location/sydney

来自:www.example.com/rss.php?pickup=sydney

问题是我无法从www.example.com/location/sydney获得$ _GET ['pickup']值,而且位置也会改变,例如:它可能是cairns,london等。我有一个名为rss的文件。 php我将从$ _GET ['pickup']获得价值。 我试过这个: - Redirect /location http://deals.vroomvroomvroom.com.au/rss.php

但它给了我一个网址: - http://deals.vroomvroomvroom.com.au/rss.php/sydney当我输入网址www.example.com/location/sydney

6 个答案:

答案 0 :(得分:1)

在.htaccess文件中尝试此操作

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

答案 1 :(得分:1)

试试这个

RewriteEngine    On
RewriteCond      %{QUERY_STRING}    ^location=1$
RewriteRule      (.*)               $1?     [R=permanent]

答案 2 :(得分:1)

将.htaccess文件放在位置目录中,其中包含以下内容:

RewriteEngine On
RewriteRule (.*) ../index.php?location=$1&e=1 [L,QSA]

这假设您要用于/ location的请求的index.php位于位置目录上方的目录中

如果您还需要重定向(www.abc.com/?location=sydneywww.abc.com/location/sydney),那么我认为最好的方法是将以下内容添加到DocumentRoot中的(单独).htaccess文件中:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)location=([^&]*)(.*) [NC]
RewriteCond %{QUERY_STRING} !&e=1 [NC]
RewriteRule ^(.*)$ $1/location/%2?%1%3 [R=301,L,NE]

答案 3 :(得分:0)

你启用了mod_rewrite吗? sudo a2enmod rewrite

当你点击刷新时,tail -f /var/log/apache2/error.log的输出是什么?

答案 4 :(得分:0)

您可能遇到两个问题:

1)是否启用了mod_rewrite?使用此命令检查:apache2ctl -M | grep rewrite - 如果已启用,您应该看到与rewrite_module (shared)类似的行。如果不是 - 启用它。

2)您是否有权使用.htaccess文件?检查虚拟主机的配置 - 这应包含AllowOverride行,类似于:

<Directory "/var/www/your/site/">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

现在在我的示例中,mod_rewrite不起作用,因为AllowOverride设置为None。在这里检查你需要什么:http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride但你基本上需要将它设置为任何其他有效选项,而不是None,否则Apache将完全忽略.htaccess个文件。

答案 5 :(得分:0)

  

位置可以是任何东西......我尝试了以下代码,但它不起作用。

如果您想将 /location.php?location=sydney 重定向到 /location/sydney,您的RewriteRule是错误的方法。唉,你不能根据查询参数重写。