通过.htaccess将URL重定向到自定义URL

时间:2012-02-21 18:02:11

标签: .htaccess url redirect permalinks

我有一个页面www.mypage.com,我想将特定网址重定向到另一个不存在的网址。

例如,我希望www.mypage.com/about重定向到www.mypage.com/about-company.php,其中/ about不存在 - 这是我自己编写的自定义网址。

我没有动态网址,只想告诉.htaccess“这/ CUSTOM_URL重定向到此/URL.php”。

网址栏中,必须显示自定义网址

我不知道是否可以做到。我已经找到了它,我发现的所有方法都是重写动态URL的方式,因此,模式。

其中一个例子是 Wordpress的永久链接,您可以在其中指定每个页面所需的URL。

3 个答案:

答案 0 :(得分:3)

尝试将以下内容添加到您网站根目录中的.htaccess文件中,以获取您请求工作的具体示例:使用www.mypage.com/about-company.php访问www.mypage.com/about

RewriteEngine on
RewriteBase / 

#if about was requested, server about-company.php
RewriteRule ^about$ about-company.php [L,NC]

如果您想要更通用的规则,例如www.mypage.com/anything用于访问 www.mypage.com/anything.php您可以用

替换上面的规则
RewriteRule ^(\w+)$ $1.php [L,NC]

或者您可以将所有请求发送到单个.php文件,该文件决定显示哪个页面,例如

RewriteRule ^(\w+)$ index.php?page=$1 [L,NC]

答案 1 :(得分:1)

您正在寻找重写规则。

对此有些了解:Apache Rewrite rules

答案 2 :(得分:0)

根据Ulrich Palha的评论,我发现这对我来说是一个.htaccess文件,可以为我自己的几个.php页面提供掩盖的替代重定向:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^(optionOne$|optionOneWithEndingSlash/$|optionTwo$|etCetera/$) ppl/peaceseeker.php [L] [NC]
RewriteRule ^(donny$|donny/$|donnycallahan$|donnycallahan/$) ppl/donnycallahan.php [L] [NC]

(我之所以提到这一点,是因为当人们键入example.com/about/(带有结尾斜线)时,Ulrich的解决方案对我造成了问题。)

谢谢,乌尔里希。如果有人知道如何修改Ulrich的.php-suffix规则以递归方式下降到任意数量的目录中,我将非常感谢您的评论!

作为任何需要进入目录的人的临时解决方案,这对我有用:

RewriteRule ^(\w+)$ $1.php [L,NC]
RewriteRule ^(\w+)/(\w+)$ $1/$2.php [L,NC]

第二个命令将处理网站根文件夹中所有目录的第一个子目录。

只需在$(每个新级别的子目录一个)之前添加更多“/(\ w +)”实例,然后添加/ $ 3,就可以处理3个级别的子目录,或4个,5个或10个子目录,$ 3 / $ 4,/ $ 3 / $ 4 / $ 5,或规则中“.php”之前的任何必要条件。我只需要2级目录(现在),所以我对发布的内容很满意;这个解决方案很简单。

如果可能的话,我仍然喜欢递归解决方案。