2011-12-26 126 views
0
RewriteRule ^(.*)/?$ ./view.php?id=$1 

這工作如果說一個id = 「ABC123」,我可以訪問www.site.com/abc123完美的罰款。的.htaccess重寫規則目錄

但我希望能夠與www.site.com/view/abc123

訪問所以,我想:

RewriteRule ^view/(.*)/?$ ./view.php?id=$1 

,但無濟於事。當我嘗試訪問www.site.com/view/abc123時,似乎它甚至沒有獲取$_GET請求來獲取該ID。 有什麼問題?

我的整個的.htaccess:

RewriteEngine On 
RewriteBase /~user/sitetest/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^view/(.+?)/?$ view.php?id=$1 

編輯:

使用上面的.htaccess,當我訪問: http://localhost/~user/sitetest/view/abc123

它不會加載$ _GET []從圖.PHP。我甚至嘗試回顯$ _GET [],但它顯示爲空白。

如果我將它編輯爲RewriteRule ^(.+?)/?$ view.php?id=$1 並訪問http://localhost/~user/sitetest/abc123它工作正常。

如果我編輯它是RewriteRule ^view-(.+?)/?$ view.php?id=$1 並訪問http://localhost/~user/sitetest/view-abc123它工作正常。

它與斜線有什麼關係?

+0

檢查我自己的職位我的意見,不能編輯它尚未通知您 – 2011-12-26 14:21:44

回答

1

嘗試是這樣的:

# this next line is really important 
RewriteBase/

RewriteRule ^view/(.+?)/?$ view.php?id=$1 

使用RewriteBase,你是專門告訴服務器使用視圖。 PHP在服務器的根。如果你沒有指定RewriteBase,服務器將在請求的目錄(正在/ view /)中使用view.php。

希望這有助於:)

+0

這也沒有工作:(我在本地做主機,如果這有所作爲 – Aaron 2011-12-26 13:53:31

+0

@Aaron你可以發佈你的.htaccess文件的其餘部分嗎?也許有其他東西搞砸了:) – 2011-12-26 13:56:13

+0

編輯我的主帖子。希望這是一個簡單的修復! – Aaron 2011-12-26 14:04:13

0

,我認爲你是在正則表達式的開始丟失/

RewriteRule ^/view/(.*)$ /view.php?id=$1 
+0

我試過,但沒有不幸的是工作。 – Aaron 2011-12-26 13:39:20

+0

嘗試編輯 – RageZ 2011-12-26 13:41:15

+0

仍然不起作用。我有/?在那裏,所以它理想的工作與後面的斜線的網址。 – Aaron 2011-12-26 13:45:11

0

通過RewriteBase設置爲/,並使用固定它/〜用戶/ ......在我的重寫規則 (creds湯姆·克納彭,張貼因爲代碼例子在這裏)。

所以,OP的.htaccess將成爲:

<IfModule rewrite_module> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^view/(.+?)/?$ /~user/sitetest/view.php?id=$1 
</IfModule> 
<IfModule !rewrite_module> 
    ErrorDocument 404 /home/user/public_html/sitetest/view.php 
    #OR perhaps: 
    #ErrorDocument 404 /home/user/httpdocs/sitetest/view.php 
</IfModule>