![](/img/trans.png)
[英].htaccess doesn't work on localhost, but on live server does (htaccess override is on)
[英]htaccess doesn't work on localhost
我今天才刚开始进行URL重写,并且观看/阅读了一些教程,但是我仍然不太了解这种重写的工作方式。
我创建了一个.htaccess
文件,并将其放在我的根目录中。 我目前正在使用Apache在本地计算机上工作。
我想将http://localhost:5216/index.php
重定向到http://localhost:5216/index
在我的.htaccess文件中,我具有以下内容:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^index?$ index.php
这行不通。 我尝试刷新页面,检查了httpd.conf
文件是否选中了AllowOverride All
。 我已经阅读了一些教程,我认为我以正确的方式进行了操作,但似乎我没有。 我的档案怎么了?
我想将
http://localhost:5216/index.php
重定向到http://localhost:5216/index
RewriteRule ^index?$ index.php
您的RewriteRule
实际上执行相反的操作...它从/index
(或/inde
因为您将最后一个x
可选)重写为index.php
。 请注意,这是内部重写 ,而不是外部重定向 。
您的RewriteRule
接近您可能想要做的事情。 这使您可以链接到/index
(在您的应用程序中),并仍然提供实际的/index.php
文件。
以这一步......假设您有文档根所谓的“接触最monster.php”的联系人文件-这是你的文件系统中的物理文件。 但是您想使用简单的URL /contact
来访问此文档-这是您在整个应用程序中将使用的URL。 您不希望任何用户看到文件名“ contact-the-monster.php”。 然后,在根.htaccess
文件中,您需要在内部 /contact-the-monster.php
/contact
所有请求重写为/contact-the-monster.php
,例如:
RewriteRule ^contact$ contact-the-monster.php [L]
由于您可能不需要执行其他任何操作,因此包含了L
( LAST
)标志。
确保未启用MultiViews
。 可以使用Options
指令在.htaccess
中禁用它:
Options +FollowSymLinks -MultiViews
MultiViews
可能与mod_rewrite冲突以产生意外结果。 尤其是当您的URL映射到一个文件而不是文件扩展名时。
实际上,我遇到了同样的问题,并认为根本没有解决方案可以帮上忙,但我发现这行神奇的代码行。
Options +FollowSymLinks -MultiViews
将其添加到您的.htaccess文件的第一行,一切都应像超级按钮一样工作。 感谢分享。
我遇到了同样的问题,我的解决方案是这个(请注意,我将Laragon与WAMP一起使用)。 它与单独的htaccess文件无关,由于Apache的httpd.conf中的这一部分,它们都被忽略了:
DocumentRoot "D:/laragon/www"
<Directory "D:/laragon/www">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
Require all granted
</Directory>
因此,您需要找到您的httpd.conf,并将AllowOverride None
更改为AllowOverride All
。 您的.htaccess文件应立即执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.