2013-08-25 73 views
1

我做了一個內置TPL系統的PHP框架。它獲取url的結尾,並找到具有該字符串的文件。所以如果URL是http://website.com/tagHere Tpl系統會查找名爲tagHere.php的文件。一切工作正常,但我現在試圖擴大框架有一個內置的後端面板。我嘗試了多種方式,但它只是拒絕工作。問題htaccess

我決定看看Wordpress的htaccess,因爲他們完全按照我要完成的工作。這是他們的htaccess的工作原理。

他們檢查請求的文件名是否是一個文件。如果它不是一個文件,那麼他們會檢查它是否是一個文件夾。如果它不是文件夾,則重定向到index.php。我希望它檢查它是否是一個文件/文件夾,如果不是從URL中刪除.php標籤,那麼TPL系統可以獲取指定的文件並將其返回。

這是我的原始.htaccess文件。

RewriteRule ^(|/)$ index.php?url=$1 
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1` 

這裏是Wordpress的原始.htaccess文件。

<ifmodule mod_rewrite.c=""> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</ifmodule> 

這裏是我的嘗試:

<ifmodule mod_rewrite.c=""> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . /index.php [L] 
RewriteRule ^(|/)$ index.php?url=$1 
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1 
</ifmodule> 

當我嘗試上述htaccess的,它會返回404錯誤。

回答

1

的規則

RewriteRule . /index.php [L] 

會因爲它說,像「如果有一個字符的URL,然後重定向」每個URL總是匹配。

你要找什麼是這樣的:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^admin/(.*?)$ admin.php?location=$1 [L] 
RewriteRule ^(|/)$ index.php?url=$1 
RewriteRule ^([a-zA-Z0-9_-]+)(|/)$ index.php?url=$1 
+0

仍然返回404錯誤。不知道爲什麼......但我確定它是htaccess,而不是PHP。 – Criesval

+0

沒有你所有的代碼很難幫你。你想要什麼網址?結果應該是什麼? – Dragony

+0

我試圖訪問這個----> http://intactdev.nu/templating-tags 它應該返回一個HTML網頁。 – Criesval