2013-02-12 43 views
1

要解決它,這是我的網站地圖的樣子。 ???.htaccess有條件重寫和文件結構

http://website.com/home 
http://website.com/contact 
http://website.com/support 

用我的index.php處理程序處理GET語句的index.php家的index.php接觸,和支持的index.php

目前,我的.htaccess看起來是這樣的:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /([^/]+)/?$ [NC] 
RewriteRule .* index.php?%1 [L] 

到目前爲止的偉大工程,但它是有限的。我整合了迷你博客我在PHP設計,將接受查詢字符串看起來像這樣:

http://site.com/blog.php?y=2013&m=02&d=12&title=welcome-to-site-blog 

現在,我想保留網站根目錄文件結構,還集成了一個博客的文件結構。希望看起來像這樣:

http://site.com/2013/02/12/welcome-to-site-blog 

任何幫助將是偉大的。我明白有條件的陳述是必需的,但我對htaccess幾乎沒有經驗。

由於提前, 克里斯

+0

代替'只要使用'\ d +'*'。有更確切的重複;很難找到同樣非特定的問題標題。 – mario 2013-02-12 20:16:26

+0

\ d +究竟做了什麼?在我替換*之後,除非查詢字符串是數字,否則我會得到404。 – user0000001 2013-02-12 20:24:18

+0

我做了,仍然得到了404。不知道我做錯了什麼。你介意做一個pastebin例子嗎?乾杯 – user0000001 2013-02-12 20:39:43

回答

1

你可以試試這個:

Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !blog\.php       [NC] 
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/? [NC] 
RewriteRule . blog.php?key1=%1&key2=%2&key3=%3&key4=%4   [L,NC] 

地圖默默

http://site.com/var1/var2/var3/var4

要:

http://site.com/blog.php?key1=var1&key2=var2&key3=var3&key4=var4

所有varN字符串被認爲是可變的,而腳本名稱blog.php是固定的,但可以是任何名稱。如果更改,則替換規則集中的所有實例。

永久和可見的重定向,與[R=301,L,NC]更換[L,NC]

+0

啊,我希望你能回答!現在,這個工作很完美 - 但是,我將如何將這個確切的例子與我的其他頁面結構結合起來?現在,這隻適用於如果你有/年/月/日期,但網站也使用'http:// site.com/company'並重定向到'http://site.com/index.php?company' 。 – user0000001 2013-02-12 21:52:57

+0

如果我理解正確,你想排除規則中的一些URL:'http:// site.com/company'和其他人。對?還有更多嗎?如果是這樣,那麼識別它們的模式是什麼(如果有的話),並將它們全部轉到根目錄中的'index.php'中。 – 2013-02-13 01:00:12