繁体   English   中英

htaccess在本地主机上不起作用

[英]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]

由于您可能不需要执行其他任何操作,因此包含了LLAST )标志。


确保未启用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM