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

3

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

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

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

在URL栏中,必须显示自定义URL

我不知道是否能够实现。 我搜索了一下,找到的都是关于如何重写动态URL并使用模式的方法。

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

3个回答

4
尝试将以下内容添加到您网站根目录下的.htaccess文件中,以使您请求的特定示例起作用:通过使用www.mypage.com/about来访问www.mypage.com/about-company.php
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]

非常感谢。事实上,似乎我正在使用的服务器出了一些问题,因为在发布问题之前尝试过的东西在另一个服务器上运行良好。然而,您的解决方案完美地解决了问题。感谢您的时间! - Unapedra

1

我之前读过这个。看起来这个服务器有些问题,因为我之前尝试过的,在另一个服务器上可以运行,但在这个服务器上却不行。无论如何,还是谢谢你的回答! - Unapedra

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。如果有人知道如何修改 Ulrich 的 .php 后缀规则以递归地进入任意数量的目录,我将感激您的评论!

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

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

第二个命令将处理您网站根目录下所有目录的第一个子目录。

您可以通过在 $ 符号之前添加更多的 "/(\w+)" 实例(每个新级别的子目录一个)来处理 3 级子目录、4 级子目录、5 级子目录或 10 级子目录,然后在规则中立即添加 /$3、/$3/$4、/$3/$4/$5 或其他必要内容,紧接着 ".php"。我现在只需要 2 级目录,所以我对我发布的内容感到满意;这个解决方案已经足够简单了。

如果可能的话,我仍然希望有一个递归解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接