如何在localhost上运行htaccess重写代码

时间:2014-07-25 11:00:28

标签: php localhost

   SecFilterEngine Off
    DirectorySlash Off
    Options -Indexes

    ErrorDocument 404 /not-found.php
    ErrorDocument 403 /not-found.php

    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTP_HOST} ^xyz.com.au$ [NC]
    RewriteRule ^(.*)$ http://someurl.au/$1 [R=301,L]

    # RewriteCond %{QUERY_STRING} ^.+$
    # RewriteRule ^$ ? [R=301,L]

    RewriteRule ^news_and_events.asp news-and-views? [NC,R=301,L]
    RewriteRule ^detailapplication.asp products/applications? [NC,R=301,L]
    RewriteRule ^detailproduct.asp products/products? [NC,R=301,L]
    RewriteRule ^detailproduct.asp products/products? [NC,R=301,L]
    RewriteRule ^products.asp products/products? [NC,R=301,L]

此代码在服务器上正常运行,但它无法在localhost上运行。请有人告诉我必要的变化。在那个url是我认为需要更改该url作为localhost,我已经在那里添加localhost但仍然无法正常工作请告诉我问题

3 个答案:

答案 0 :(得分:0)

如果您为项目使用不同的文件夹,请在RewriteBase中添加文件夹名称,如下所示。

RewriteBase /YOUR_PROJECT_FOLDER/

还删除以下行。对于localhost来说没有必要。

RewriteCond %{HTTP_HOST} ^xyz.com.au$ [NC]
RewriteRule ^(.*)$ http://someurl.au/$1 [R=301,L]

答案 1 :(得分:0)

我建议打开重写日志,以便您可以看到实际发生的情况。

我不知道你正在使用什么版本的apache甚至操作系统,所以尝试将此添加到你的httpd.conf或该网站的虚拟主机定义,但不在.htaccess文件中

对于Apache 2.2 rewrite log Doc这样的

RewriteEngine On
RewriteLog "full/path/to/rewrite.log"
RewriteLogLevel 3

如果您使用的是Apache 2.4 rewrite log Doc,则语法已更改为此类

RewriteEngin On
RewriteLog "full/path/to/rewrite.log"
LogLevel alert rewrite:trace6

答案 2 :(得分:0)

首先尝试删除SecFilterEngine Off,因为它需要默认情况下未安装的mod_security。

如果仍然无法检查你的httpd.conf。需要激活mod_rewrite。 See this answer.

如果它仍然无效,则AllowOverride可能设置为无。