Apache 重写模块不工作

Apache 重写模块不工作,apache,.htaccess,mod-rewrite,url-rewriting,friendly-url,Apache,.htaccess,Mod Rewrite,Url Rewriting,Friendly Url,巴德在网上尝试了几种解决方案,但都不适合我。因此,这是我的情况,如果有人能帮助我,我将非常高兴 这是我的httpd.conf文件关于该问题的主要信息: <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride

巴德在网上尝试了几种解决方案,但都不适合我。因此,这是我的情况,如果有人能帮助我,我将非常高兴

这是我的httpd.conf文件关于该问题的主要信息:

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

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

发件人:
www.site.com/post.php?bID=7&title=blog title
致:
www.site.com/blog7/blog title

但是它不工作(页面正常加载,但url未修改)!我通过生成了重写规则,所以应该可以


奇怪的是,在尝试其他规则(如隐藏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]

有人有任何猜测吗?

我认为您的规则没有任何问题,请尝试禁用mod_协商:


在使用任何重写规则之前。

我认为您的规则没有任何问题,请尝试禁用mod_协商:

在使用任何重写规则之前。

使用此规则:

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]
使用此规则:

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]

你说的“不工作”是什么意思?你犯了什么样的错误?apache error.log中发生了什么?顺便说一句,这是进行测试的好地方。htaccess谢谢你的提示@hjpotter92答案对我有用“不工作”是什么意思?你犯了什么样的错误?apache error.log中发生了什么?顺便说一句,这是进行测试的好地方。htaccess谢谢你的提示@hjpotter92的答案对我很有用!它是这样工作的,你知道我的重写规则不起作用的原因吗?另外,对于下一条规则,我是否需要重复重写第二条?干杯,谢谢!它是这样工作的,你知道我的重写规则不起作用的原因吗?另外,对于下一条规则,我是否需要重复重写第二条?干杯
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]