【问题标题】:rewrite mod not working重写模组不工作
【发布时间】:2015-11-10 01:32:00
【问题描述】:

从网上尝试了几种解决方案,但对我不起作用。因此,这是我的情况,如果有人可以帮助我,我会非常高兴。

这是我的 httpd.conf 文件主要信息:

<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>

<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride All
   Order allow,deny
   Allow from all
</Directory>

这是我的 .htaccess 信息:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blog([^/]*)/([^/]*)$ /post.php?bID=$1&title=$2 [L]

目标是重写

来自:www.site.com/post.php?bID=7&amp;title=blog-title 至:www.site.com/blog7/blog-title

但是它不起作用(页面加载正常但url没有修改)!我通过http://www.generateit.net/mod-rewrite/index.php生成了重写规则,应该没问题。


奇怪的是,在尝试隐藏 php 扩展等其他规则时它工作正常,所以 .htaccess 规则显然工作。

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]

# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

有人猜到了吗?

【问题讨论】:

  • 你所说的“不工作”是什么意思?你有什么样的错误? apache error.log 中发生了什么?
  • 顺便说一句,htaccess.madewithlove.be 是测试 .htaccess 的好地方
  • 感谢您的提示! @hjpotter92 答案对我有用

标签: apache .htaccess mod-rewrite url-rewriting friendly-url


【解决方案1】:

使用这条规则:

RewriteCond %{THE_REQUEST} ^GET\ /post.php\?bID=(\d+)&title=([^\s&]+) [NC]
RewriteRule ^ /blog%1/%2? [R=302,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog(\d+)/(.*)/?$ /post.php?bID=$1&title=$2 [NE,L]

【讨论】:

  • 非常感谢!它以这种方式工作,您知道它不适用于我的重写规则的原因吗?另外,对于下一个规则,我需要重复重写条件吗?欢呼
【解决方案2】:

我没有发现你的规则有任何问题,尝试禁用 mod_negotiation MultiViews

Options -Multiviews

在使用任何 RewriteRule 之前。

【讨论】:

    猜你喜欢
    • 2014-01-12
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 2014-11-24
    相关资源
    最近更新 更多