2015-11-10 101 views
1

尝试了几种网络解决方案,bud并不适合我。因此,这是我的情况,如果有人能帮助我,我会很高兴。重写mod无法正常工作

这是我的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&title=blog-title 至:www.site.com/blog7/blog-title

How永远不工作(页面正常加载,但网址未被修改)!我通过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] 

有没有人有任何猜测?

+0

你说的这句话的意思是“不工作”?你有什么样的错误?在apache error.log中发生了什么? –

+0

btw,http://htaccess.madewithlove.be/是测试的好地方.htaccess –

+0

感谢您的提示! @ hjpotter92答案为我工作 – czmarc

回答

0

使用此规则:

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] 
+0

非常感谢!它以这种方式工作,你知道为什么它不符合我的重写规则吗?另外,对于下一个规则,我是否需要重复rewritecond?干杯 – czmarc

0

我看不出有任何问题,你的规则,尝试禁用mod_negotiation模块MultiViews

Options -Multiviews 

使用任何重写规则之前。