2012-07-29 102 views
1

快速的問題,我已經看到它被問了數百次,但我似乎無法讓它工作(對我感到羞恥)。htaccess通配符重定向到查詢字符串

我想重定向index.php以外的其他任何東西到view.php?id = $ 1其中$ 1是index.php以外的任何東西 - 但我似乎無法讓它工作。

例如:

http://domain.com/應該使用的index.php
http://domain.com/index.php因爲這應該
但..
http://domain.com/sdgoi3應該使用http://domain.com/view.php?id=sdgoi3

我已經嘗試了一些東西,經歷了下來上面的問題,但無濟於事。

任何人都有解決方案嗎?讚賞。

回答

1

嘗試在你的文檔根把這個在htaccess文件:

RewriteEngine On 
RewriteRule ^$ /index.php [L] 
RewriteRule ^index\.php - [L] 
RewriteRule ^view\.php - [L] 

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

這裏的邏輯是:

  1. 如果請求URI是/重寫index.php
  2. 如果請求URI以index.php開頭,請勿更改並通過
  3. 如果請求URI以開頭,不改變並通過
  4. 如果請求是一個不存在的文件或目錄,傳遞給view.php與ID PARAM
+0

謝謝,這適用於通配符,但不適用於'http:// domain.com /'等。另外,有沒有辦法讓say/css/*/img/*正常工作? – 2012-07-29 18:56:59

+1

@AdamKDean請參閱編輯。 – 2012-07-29 19:00:17

+0

太棒了。這工作完美。謝謝! – 2012-07-29 19:02:30

0

也許是這樣的:

RewriteCond %{REQUEST_URI} !^index\.php 
RewriteCond %{REQUEST_URI} !^view\.php 
RewriteRule ^(.*)$ view.php?id=$1 [L] 

+0

我已經試過了,我不斷收到無限循環的問題 – 2012-07-29 18:51:22

+1

編輯修復view.php上的循環。 但Jon Jon的回答可能是好的。 – Jerska 2012-07-29 18:53:27

相關問題