.htaccess:将特定链接重定向到另一个?

问题描述 投票:0回答:1

我有这三个链接:

localhost/my_projects/my_website.php
localhost/my_projects/my_website.html
localhost/my_projects/my_website

php和html文件的路径如下:

C:\xampp\htdocs\my_projects\my_website.php
C:\xampp\htdocs\my_projects\my_website.html

没有扩展名的链接是“人为的”,我想使用上述链接:

localhost/my_projects/my_website

获取以下任一链接的内容:

localhost/my_projects/my_website.php
localhost/my_projects/my_website.html

两个示例文件而不是一个文件的原因是我希望在编辑htaccess文件时能够在这两个文件之间切换。显然我只想一次访问其中一个文件。

我需要在my_projects文件夹中的.htaccess文件中完成该操作才能获得该文件?如何将一个特定链接重定向到另一个特定链接?

.htaccess xampp
1个回答
0
投票

在阅读澄清文件夹结构的评论后,我更正了RewriteRule。 (顺便说一下,最好将这些信息添加到问题本身而不是评论中)。

您要定位的网址是:http://localhost/my_projects/my_website

http://是协议 localhost是你的域名(也可能是127.0.0.1或互联网上像www.example.com这样的多米安名字)

我假设您在端口80上运行Apache,否则在URL中您还需要指定端口。例如,对于8086港口,它将是http://localhost:8086/my_projects/my_website

真正的路径是htdocs/my_projects/my_website.phphtdocs/my_projects/my_website.html,取决于您的需求(显然两者不会同时工作)。

这里的“假”网址中的my_projects与真实文件夹"my_projects"相撞,因此Apache将转到该文件夹​​并看到那里没有my_website(没有扩展名)文档(它将无法达到重写规则)。

在SO中有一个问题可以为此提供解决方案,但它不是一个完美的解决方案,它有一些边缘情况,其中url仍会失败或使其他url失败。我昨天发布了它,但我现在似乎没有找到它。

如果你有灵活性,这个简单的解决方案是更改“假”网址,使其不与真实路径发生冲突。

一种选择是例如用连字符替换下划线。然后,如果你想在网址中保留一种“假”文件夹结构,你将以http://localhost/my-projects/my-website的身份访问该页面。否则你可以简单地使用http://localhost/my-website

以下是两种选择:

# This is for the directory not to be shown. You can remove it if you don't mind that happening.
Options -Indexes

RewriteEngine On

#Rule for http://localhost/my-projects/my-website
RewriteRule ^my-projects/my-website(.+)?$ my_projects/my_website.php$1 [NC,L]

#Rule for http://localhost/my-website
RewriteRule ^my-website(.+)?$ my_projects/my_website.php$1 [NC,L]

(不要同时使用这两种,只需选择其中一种,或使用它们来满足您的需求)

重写规则的第一部分是“假”网址的正则表达式,第二部分是真实文件夹结构到您要显示的页面的相对路径。

在正则表达式中,我们捕获.../my_website之后我们认为可能的查询参数,并将其粘贴到规则的第二部分(my_website.php)中的$1之后。

稍后,如果你想将网址指向my_website.html,你必须改变规则的第二部分,在那里它说.php,用.html替换它。

顺便说一下,它是完全有效的,你会在大多数SEO友好的网站上看到它写一个网址作为http://www.somesite.com/some-page-locator,并有一个重写规则,将该网址转换为网页上的页面,这是我写的我的第一个答案。

© www.soinside.com 2019 - 2024. All rights reserved.