.htaccess在使用XAMPP的本地主机上无法工作

26
我使用XAMPP,但在本地主机上无法使用.htaccess文件。我尝试了很多次...在线工作正常,但本地主机显示“[请求的URL在此服务器上未找到]”。
我的根目录是真实的。
localhost/acre/real/property_available.php
localhost/acre/real/properties


<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /acre/real/
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^properties$ /property_available.php/$1 [NC,QSA]
</IfModule>
请。

本地主机是Windows还是其他系统?在服务器上使用虚拟主机还是专用机器?httpd.conf在本地主机上也可以吗(即所有其他cfg)?本地主机上记录了任何错误日志数据吗?已经双重检查路径信息是否正确(/prop....php)? - user2299169
你是否启用了 mod_rewrite 和 .htaccess?你的 DocumentRoot 是什么? - anubhava
真实文件夹是我的文档根目录。已启用mod_rewrite并从con文件中移除#号。 - acre
9个回答

52

我之前遇到了类似的问题。

httpd.conf 中进行检查解决了问题。

     # AllowOverride controls what directives may be placed in .htaccess files.
     # It can be "All", "None", or any combination of the keywords:
     #   Options FileInfo AuthConfig Limit
     #
     AllowOverride All   <--- make sure this is not set to "None"

值得注意的是,我尝试过从马克的回答中学习“在.htaccess文件中加入垃圾代码”这一方法,虽然它确实会导致服务器错误,但由于没有允许覆盖,即使它被读取,也不会起作用。


我也遇到了这个问题,但是无法找到任何 http.conf 文件。我一定需要一个吗? - RGriffiths
我认为您应该使用默认安装期间创建的httpd.conf文件。 - TimP
1
谢谢 - 找到了。通过Xampp控制面板访问。我一直在寻找c:/.....路径等。 - RGriffiths
1
通常在尝试.htaccess中的垃圾代码以确保其有效后,我们会首先检查IfModule是否已激活,然后添加最简单的规则(例如将path/page重定向到direct/url)以确保Apache正在工作,然后逐一添加条件。 - Ibrahim.H

34

在conf/extra/httpd-vhosts.conf文件中,对于所有存在问题的网站,请添加AllowOverride All一行。

<VirtualHost example.site:80>
    # rest of the stuff
    <Directory "c:\Projects\example.site">
        Require all granted
         AllowOverride All <-----This line is required
    </Directory>
</VirtualHost>

这解决了我在虚拟主机中的.htaccess问题。我没有在其他任何地方看到这个解决方案。谢谢! - mr_plum
有趣的是,当我在WordPress中改变了永久链接但没有.htaccess文件时,编辑httpd.conf文件就解决了我的问题,并使我的本地WordPress设置正常工作。 - muhammad tayyab
这是我解决重写规则问题的唯一方法。我为了修复它已经挣扎了一个星期。你救了我的一天!非常感谢你。 - Tiny Sonhh

13

试一试

<IfModule mod_rewrite.so>
...
...
...
</IfModule>

替换为 <IfModule mod_rewrite.c>


6
看不到您的系统很难判断出问题所在,但请尝试以下步骤(如果这些方法不行,请留言并附上错误日志):

[停止 Apache 服务器实例。确保它没有运行!]

1) 将 Apache 服务器/安装移动到没有长文件名和空格的文件夹中

2) 在 install\conf 文件夹中检查 httpd.conf 并查找 AccessFileName。如果是.htaccess,将其改为 Windows 可接受的文件名(如conf.htaccess

3) 再次核对 htaccess 文件是否已被读取:将一些无法解释的垃圾添加到其中并启动服务器:应该会收到一个错误500。 如果没有,请检查 httpd.conf 文件(如果看起来正常,请检查是否定义了唯一的 htaccess 文件以及它的位置,并且在文件内部仅定义了一次;还要检查 httpd.conf 和 htaccess 文件是否可访问:未加密、文件访问权限未限制、驱动器/路径可用 - 没有长文件夹路径和文件名-)
再次停止 Apache,然后继续:
4) 如果您的系统上也有 IIS,请停止它(如果可以的话,请卸载它)

5) 将以下内容添加到有效的 htaccess 文件顶部:
RewriteEngine On
RewriteLog "/path/logs/rewrite.log" #确保路径存在!
RewriteLogLevel 9

6) 清空您的 [apache]\logs 文件夹(如果您使用其他文件夹,则清空那个文件夹 :))

7) 检查以下条目是否已设置并正确:
Action application/x-httpd-php "c:/your-php5-path/php-cgi.exe"
LoadModule php5_module "c:/your-php5-path/php5apache2.dll"
LoadModule rewrite_module modules/mod_rewrite.so
也要避免在 phpX 安装中的文件夹名称中使用长路径名和空格!

8) 启动 Apache 服务器

您可以按照上面的所有步骤操作,也可以逐一进行。但无论如何,请确保您尝试了以上所有方法!
如果系统仍然出问题并且您无法解决,请从日志文件夹复制粘贴错误消息以获得进一步帮助。


4

我曾经遇到过类似的问题。但问题出在文件名“.htaccess”上,因为Windows不允许文件名以“.”开头,解决方法是使用CMD命令重命名文件。“rename c:\xampp\htdocs\htaccess.txt .htaccess”


6
在Windows系统中,你也可以创建以句点开头的任何文件,只需在文件名后添加一个句点即可。因此,将文件命名为“.htaccess。”,Windows会自动去除附加的句点,最终生成名为“.htaccess”的文件。请注意,不要改变原文意思,使语言更通俗易懂。 - Precastic

1

对于在MacOS Capitan、High Sierra和MacOS Mojave(10.12+)上使用XAMPP虚拟机的用户,您可以按照以下步骤操作:

1. mount /opt/lampp
2. explore the folder
3. open terminal from the folder
4. cd to `htdocs`>yourapp (ex: techaz.co)
5. vim .htaccess
6. paste your .htaccess content (that is suggested on options-permalink.php)

enter image description here


0

针对Windows用户,请务必仔细查看此部分。

RewriteRule ^properties$ /property_available.php/$1 [NC,QSA]

Apache文档所述:

mod_rewrite模块使用基于PCRE正则表达式解析器的基于规则的重写引擎,实时重写请求的URL。

因此,^properties$表示Apache仅查找与properties完全匹配的URL。您可以尝试此代码。

RewriteRule properties /property_available.php/$1 [NC,QSA]

因此,Apache将看到具有properties的URL,并将其重写为/property_available.php/


0

我也为我的本地主机设置了xampp,但是在安装过程中或之后,我没有对xampp创建的文件做任何操作。

但是在'.htaccess'文件中,请确保将其设置为类似以下内容。这对我有效,而且对你来说应该没有任何影响。

RewriteEngine On
RewriteRule ^filename/?$ filename.html

将 .html 更改为您正在使用的任何格式。

确保您的安装是干净的,只需创建 .htaccess 文件。 还要记得为每个目录放置一个 .htaccess 文件(不确定是否可以在所有文件夹中使用一个文件,但为了安全起见,只需这样做,它将始终起作用。


-1

编辑 .htaccess 文件,使第一行读取“Test.”:

测试。

设置默认处理程序

DirectoryIndex index.php index.html index.htm

...


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