在Apache本地服务器上使用.htaccess文件

13

好的,我已经使用PHP和MySql在Apache本地主机上成功运行了。现在我想使用.htaccess文件并使用RewriteRule,但我不知道把它放在哪里。

我有以下目录:

C:\dev\progs 存储着 Apache PHP 和 MySQL,每个都有自己的子目录,例如 C:\dev\progs\Apache 等等...

C:\dev\www 存储所有站点文件。

我需要知道在哪里放置.htaccess文件,需要进行什么配置,以及我的希望是否能够实现。

谢谢


我认为如果您可以访问服务器配置文件,则不应使用.htaccess配置。在这种情况下,您可以直接修改服务器配置文件。 - SeinopSys
是的,我也听说过那个,只是我觉得配置文件有些令人困惑。我还可以找到更多关于.htaccess文件的教程。 - KFox
4个回答

16

在本地Apache服务器上启用.htaccess

1) Find your apache directly which uses the php installation .
2) Open your httpd.conf  with notepad, Which is located in the path \apache\conf directory
3) Find the code like below       
      #LoadModule rewrite_module modules/mod_rewrite.so
4) Remove # from above code


# 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"


5) Save httpd.conf file
6) Restart your apache server

谢谢。只需添加一个小部分即可避免WAMP用户的第1步和第2步。单击WAMP图标,滚动到Apache。您将直接获得要编辑的httpd.conf文件。 - NewBee

14

.htaccess是一个配置文件,应存储在您的页面所在的位置。简而言之,它应该是在 c:\dev\www 中,在您的情况下,但您也应该阅读此文档。顺便提一句,别忘了通过从包含它的行中删除哈希来启用mod_rewrite。

LoadModule rewrite_module modules/mod_rewrite.so

通过更改配置文件启用.htaccess

AllowOverride None

AllowOverride All

请确认您已在Apache服务器上启用了rewrite_module,并检查您的httpd.conf文件,确保此行开头没有“#”即注释符号。LoadModule rewrite_module modules/mod_rewrite.so - Nagaraj Pujar

2

尝试一下。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projectfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /projectfolder/index.php [L]
</IfModule>

1
你需要将 .htaccess 文件放置在你想要控制的网站目录中(包括任何子目录)。对于 Rewrite,它通常放在根目录,并作用于 index.php 页面。
例如,如果你将 .htaccess 文件放在 \dev\www\ 目录中,而你的 .htaccess 文件有像 RewriteRule ^(.*)$ /index.php?/$1 [L] 这样的内容,这是一个正则表达式,它表示获取 URL 中的所有字符并将它们附加到 /index.php? 脚本中。/$1 是正则表达式中的反向引用。

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