【问题标题】:Simple Mod-Rewrite rule - single rule - file exists简单的 Mod-Rewrite 规则 - 单个规则 - 文件存在
【发布时间】:2013-10-20 17:50:12
【问题描述】:

我有一个非常简单的模组重写规则

Options FollowSymLinks 
RewriteEngine On
RewriteRule ^hosted/essws/([^/]*)/$ /hosted/essws/?key=$1 [L]

即使文件或目录存在,我也希望激活此重写。

例如: 网址:

http://localhost/hosted/essws/candy-sweets-buffet/

将加载:

http://localhost/hosted/essws/index.php?key=candy-sweets-buffet

即使目录 /hosted/essws/candy-sweets-buffet/ 存在。

任何帮助将不胜感激。

【问题讨论】:

  • 默认情况下,即使目录存在,URL 也会被重写。
  • 为什么不起作用?尝试添加斜杠:RewriteRule ^/hosted/essws/([^/]*)/$ /hosted/essws/?key=$1 [L]

标签: php .htaccess mod-rewrite


【解决方案1】:
Options FollowSymLinks 
RewriteEngine On
RewriteRule ^hosted/essws/([^/]*)/$ /hosted/essws/?key=$1 [L]

看! rewriteRule 不在乎目录是否存在!它会重写 URL!
你的问题很简单,很多人都有!不要将/ 放在重写参数的开头!

Options FollowSymLinks 
RewriteEngine On
RewriteRule ^hosted/essws/([^/]*)/$ hosted/essws/?key=$1 [L]

【讨论】:

    【解决方案2】:

    我挣扎了一会儿试图做:

    RewriteEngine On
    RewriteRule ^catalog/([0-9]+)/?$ catalog.php?id=$1 [NC,L]
    

    在我的例子中,catalog.php 作为一个文件存在。通过删除 MultiViews,现有文件不再是重写规则的问题。

    Options -MultiViews
    RewriteEngine On
    RewriteRule ^catalog/([0-9]+)/?$ catalog.php?id=$1 [NC,L]
    

    完成!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      相关资源
      最近更新 更多