2013-05-22 28 views
0

下modrewrite工作時,我有這個這正是我多麼希望:「www.mysite.com/files/person/john.html」 files.php Q =人分頁和國防部重寫

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/(.*) /$1.php?q=$2 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) /files.php?q=$1 [L] 
AddHandler application/x-httpd-php5 .html .htm .txt .php 

我遇到的問題是,當我有分頁,我有不止一個人顯示像這樣:「www.mysite.com/person/2」這成爲person.php,但是沒有person.php和modrewrite應該只看下面這個條件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) /files.php?q=$1 [L] 

東西是這個「www.mysite.com/person/2」作品whe n我只有這個modrewrite:

Options +FollowSymLinks 
RewriteEngine On 
#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
#RewriteRule ^(.*)/(.*) /$1.php?q=$2 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) /files.php?q=$1 [L] 
AddHandler application/x-httpd-php5 .html .htm .txt .php 

但是,我取消註釋它,它停止工作?該怎麼做,有什麼想法?

+0

你需要什麼是什麼呢?你有沒有person.php?你解釋得很複雜。 – rcpayan

+0

我沒有person.php;基本上當我有一個分頁,我想mod重寫去files.php。謝謝 – NULL

回答

0

你可以使用這個正則表達式。

DirectoryIndex index.php 

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/([a-zA-Z]+)(.html)?$ /$1.php?q=$2 [L] 
RewriteRule ^(.*)/([0-9]+)$ /files.php?q=$1&p=$2 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) /files.php?q=$1 [L] 

</IfModule> 

解釋的正則表達式

()  : means group and match that 
[a-zA-Z] : means only letters lower or upper 
.html : means match ".html" 
?  : means 0 or more times 
[0-9] : means only numbers 0 to 9 
+  : means at least 1 or more times 
+0

與此問題是當我只有這個www.mysite.com/person我的網站打破。因爲上述不起作用。 – NULL

+0

我給了所有代碼,首先我給了它只是其中的一部分,試試那個,告訴我是否有錯誤 – rcpayan

+0

非常接近,當我有這樣的鏈接:www.mysite.com/person/2,重寫變成this:files.php?q = 2而應該是files.php?q = person;在我的PHP代碼中,我實際上試圖從「/ person/2」中提取「2」。所以這被稱爲:files.php?q = person,然後我從鏈接抓取最後2個:www.mysite.com/person/2分頁。 – NULL