使用mod_rewrite时如何显示生成的路径?

时间:2013-01-29 23:55:12

标签: php apache mod-rewrite redirect localhost

我有一段时间试图让apache mod_rewrite规则起作用。使这个过程最困难的是我无法知道最终输出字符串是什么。我继续得到404页,但除了我做错了之外,这并没有告诉我多少。是否有一些方法可以回显最终的重写,而不是将我重定向到404?

。 。 。如果有人想帮助我解决我原来的问题,我正试图让所有前往/server/root/to/folder/public_html/的人被重定向到/server/root/to/folder/public_html/destinationFolder/。以下是我尝试过的数百种变体之一:

<IfModule mod_rewrite.c>

    RewriteEngine On

    RewriteCond $1 !^(favicon\.ico|assets)

    RewriteRule ^public_html/(.*) destinationFolder/$1 [L]

</IfModule>

1 个答案:

答案 0 :(得分:1)

您正在使用系统路径。 Apache mod_rewrite仅适用于URL(.htaccess文件中含有PT标志),这是您的第一个错误。

public_html通常是根目录。例如:http://mydomain.com

然后,完整的规则集可能是这样的:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  !^(favicon\.ico|assets)  [NC]
RewriteRule  ^(.*)/?$    DestinationFolder/$1        [L]

无声地映射

http://mydomain.com/Anything

要:

http://mydomain.com/DestinationFolder/Anything

anything为文件favicon.ico或文件夹/assets

对于永久重定向,请将[L]替换为[R=301,L]

这只是一个例子。必须修改规则和参数以满足实际要求。