编辑:
我想重定向网址
至: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
答案 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=sydney
到www.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是错误的方法。唉,你不能根据查询参数重写。