2016-05-16 165 views
1

我目前的網址:http://website.com/user.php?user=jon 我希望它看起來像:http://website.com/jon的.htaccess重寫不工作

這是我目前在我的htaccess文件

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST-FILENAME} !-d 
RewriteCond %{REQUEST-FILENAME} !-f 
RewriteCond %{REQUEST-FILENAME} !-l 

RewriteRule . user.php?user=%{REQUEST-FILENAME} 

但它不工作。

+0

你可以也可以嘗試 - RewriteRule(。*)user.php?user = $ 1 – Brett

+0

可以工作;有點。 它讓我到我想要的頁面,但它說用戶不在數據庫中。 – Critical

+0

你可以做一個print_r($ _ GET);在這個頁面上加載並向我們展示你的問題的輸出(甚至可以在user.php上發佈代碼) – Brett

回答

2

你需要改變你的 - 到_ - 這是REQUEST_FILENAME不請求文件名

Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule . user.php?user=%{REQUEST_FILENAME} 

我更喜歡使用規則的正則表達式部分

RewriteRule ^(.*)$ user.php?user=$1 [NC,L] 
+0

好的地方,我看到他們作爲下劃線,我也會改變最後一行爲 RewriteRule ^(。*)$ user.php?user = $ 1 [NC,L] –

+0

@JamesLockhart你想編輯和我將批准它,你可以得到一些聲譽 – Brett

+0

完成,並感謝:) –

2

您是否在虛擬主機或Apache配置中爲該目錄啓用了AllowOverride?

例如

<Directory "/"> 
    AllowOverride All 
</Directory> 

如果沒有,那麼你的本地htaccess文件將被忽略。另外,你是否啓用了mod_rewrite?

如果不確定檢查您的Apache日誌文件。

https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

+0

我的主機不允許我修改apache配置。 當我把最後一行改爲'RewriteRule。 user.php?user =%jon'它的工作原理,但只把我帶到那個頁面。 – Critical