2015-11-10 137 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 

使用任何重寫規則之前。