【问题标题】:How can I display the resulting path when using mod_rewrite?使用 mod_rewrite 时如何显示结果路径?
【发布时间】:2013-01-13 16:43:55
【问题描述】:

我花了很长时间试图让 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>

【问题讨论】:

标签: php apache mod-rewrite redirect localhost


【解决方案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]

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

【讨论】:

  • 这是完美的。它就像一个只有几个星期的魅力。谢谢!
猜你喜欢
  • 2012-12-02
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2015-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多