2016-09-08 42 views
0

我想我的URL重寫從http://website.com/preview.php?id=puzzledhttp://website.com/cv/puzzledhttp://website.com/resume.php?id=puzzledhttp://website.com/puzzled ...但看來我沒有得到這樣的結果。重寫我的網址,除去查詢字符串,並作出新的漂亮的網址

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([0-9a-zA-Z-]+) /resume.php?id=$1 [QSA,L] 
RewriteRule ^cv/([0-9a-zA-Z-]+) /preview.php?id=$1 [QSA,L] 

回答

1

嘗試像這樣,

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^cv/([\w-]+)$ preview.php?id=$1 
RewriteRule ^([\w-]+)$ resume.php?id=$1 
RewriteRule ^([\w-]+).php$ $1 [L] 

Apache的mod_rewrite的文檔

變量SCRIPT_FILENAME和REQUEST_FILENAME包含相同 值 - 內部的request_rec的文件名字段的值 Apache HTTP Server的結構。的第一個姓名是常用 已知CGI變量名而第二個是相應的 對方REQUEST_URI的(其中包含URI字段request_rec結構 的值)。

如果發生了置換,並重寫將繼續,這兩個變量將相應更新的 值。

如果每個服務器上下文中使用(即,之前請求被映射到 文件系統)和SCRIPT_FILENAME REQUEST_FILENAME不能包含 完整本地文件系統路徑由於路徑是在該階段的處理的 未知。在這種情況下,兩個變量最初將包含值爲 REQUEST_URI。爲了獲取每個服務器上下文中請求的完整本地文件系統 路徑,請使用基於URL的預讀 %{LA-U:REQUEST_FILENAME}來確定最終值 REQUEST_FILENAME。

+0

好的,謝謝你,你能解釋一下這更多? :) –

+0

嗨,這與我的登錄網址無法正常工作http://website.com/login.php其中504這裏 –

+0

你怎麼把網址登錄'website.com/login.php'或'website.com/login ' –

1

您可以使用這些規則:

Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^([\w-]+)/?$ resume.php?id=$1 [QSA,L] 

RewriteRule ^cv/([\w-]+)/?$ preview.php?id=$1 [NC,QSA,L] 
+0

http://website.com/puzzled給予404錯誤 –

+0

嘗試第一個規則爲'重寫規則^([\ w - ] +)?/ $ /resume.php?id=$1 [QSA,L]' – anubhava

+0

不'resume.php'存在於網站根目錄以及'.htaccess'中? – anubhava