0

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

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 ^$ pages.php?name=home_page [L] RewriteRule (.*)/$ pages.php?name=$1 [L]

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

4

2 回答 2

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.
于 2013-01-24T01:40:03.367 回答
0

尝试这个:

RewriteEngine On
RewriteRule ^webpage.php?name=(.*)$ /$1 [R=301,L]
RewriteRule ^$ webpage.php?name=home_page [L] 
RewriteRule (.*)/$ webpage.php?name=$1 [L]
于 2013-01-23T23:09:12.013 回答