我需要一點幫助。用htaccess和mod_rewrite忽略/接受正斜槓
我正在製作一個php頁面,它收集查詢字符串,根據數據庫對匹配項進行測試,然後將用戶重定向到網站的其他部分。
的是如何工作的目前(不htaccess的/ mod_rewrite的):
- 用戶訪問:domain.com/redirect/index.php?slug=Test_1
- PHP頁面進行消毒,並查找「 Test_1'並檢索目標URL以將用戶重定向到。 (例如domain.com/New_Test_1)
- 然後,php頁面301會相應地重定向。
這部分工作正常。然而,由於我無法控制的一些變數,我需要(使用htaccess的/ mod_rewrite的)解釋原始URL,就像這樣:
- domain.com/redirect/index.php/Test_1
仍然充當一樣:
- domain.com/redirect/index.php?slug=Test_1
(注:是的,在index.php需要ST 。唉url中)
我有這個在我的htaccess下面的工作,但我知道這可能是更好的:
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ %{DOCUMENT_ROOT}/redirect/index.php?slug=$2 [PT,L,QSA]
部分我需要幫助...
一些舊的URL蛞蝓有向前他們斜槓,像這樣:
- domain.com/redirect/index.php?slug=How_to_Code/Program
沒有htaccess的,上面仍然有效,但無法用漂亮的(IER)網址:
- domain.com/redirect/index.php/How_to_Code/Program
與我目前的htaccess,它只捕獲'How_to_Code'部分,但忽略它後面的所有內容。
所以我的問題是這樣的:我如何重構我的htaccess來抓取domain.com/redirect/index.php/(.*)$之後的所有內容,包括正斜槓?
編輯:這個。htaccess的會內/重定向目錄
感謝大衛,這個.htaccess進入/ redirect目錄。我試過你的規則,但是捕獲($ 1)沒有返回任何結果。有任何想法嗎? – stealthify 2012-07-20 12:51:42
如果它在您的重定向目錄中,那麼只需將 'RewriteRule^index.php /([a-zA-Z0-9/_] +)$ index.php?slug = $ 1' 這將重定向到索引。 php文件在重定向文件夾中,同時保持URL像www.yoursite.com/redirect/index.php/Some_value – David 2012-07-20 13:13:25
你讓我到我需要去的地方。我結束了使用 'RewriteRule^index.php /(.+)$ index.php?slug = $ 1 [PT,L,QSA]' 只是因爲有很多字符的可能性(不僅僅是正斜槓) 。這樣做有任何安全問題嗎? – stealthify 2012-07-20 13:25:35