使用Apache重定向URL

时间:2013-01-23 23:01:04

标签: apache url redirect rewrite

如何让Apache自动重定向网址,例如:

mydomain.com/webpage.php?name=about_me mydomain.com/webpage.php?name=contact 等

为:

mydomain.com/about_me mydomain.com/contact

另外,mydomain.com/webpage.php?name = home_page应重定向到:mydomain.com /

现在,我有.htaccess文件:

RewriteEngine On RewriteRule ^ $ webpage.php?name = home_page [L] RewriteRule(。*)/ $ webpage.php?name = $ 1 [L]

但RewriteRule不会自动重定向访问者,只是让他们使用短URL或长URL。换句话说,我想强制使用短网址。

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteEngine On
RewriteRule ^webpage.php?name=(.*)$ /$1 [R=301,L]
RewriteRule ^$ webpage.php?name=home_page [L] 
RewriteRule (.*)/$ webpage.php?name=$1 [L]

答案 1 :(得分:0)

只是为了验证。你想让apache像这样工作:

访客访问“mydomain.com/about_me”,并显示“mydomain.com/webpage.php?name=about_me”。 访客访问“mydomain.com/contact”,并显示“mydomain.com/webpage.php?name=contact”。

如果你想拥有这个。你应该试试这个:

RewriteEngine On
RewriteRule ^(.*)$ webpage.php?name=$1 [L]

如果您希望“mydomain.com/webpage.php?name=about_me”自动重定向到“mydomain.com/about_me”。您应该在webpage.php文件中添加额外的检查。检查应评估URI以查看是否使用“webpage.php”,如果使用,则应使用“header”函数重定向到短URL。所以这是代码:

$page="webpage.php";

if(substr($_SERVER["REQUEST_URI"],0,strlen($page)) == $page) {
  $location = "Location: http://".$_SERVER["SERVER_NAME"]."/".$_GET["name"];
  header($location);
} 
// whatever webpage.php does.