2017-07-08 80 views
0

我想在我的PHP項目創建一個動態的系統,這是我的.htaccess的樣子:重寫基本域的index.php

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteRule ^pages/?$ resources/pages/page.php [NC,L] 
    RewriteRule ^([A-Za-z0-9-]+)?$ resources/pages/post-or-category.php?tcs=$1 [NC,L] 
</IfModule> 

/頁/動態後或類別頁作品但如果上述內容不重定向,則第二個規則會重定向所有內容。由於它是一個獲取帖子和類別的PHP腳本,我不想對此進行索引檢查。如果域中沒有任何內容,是否有重寫方法(例如:www.domain.comdomain.com)。

此外,我在腳本中區分帖子和類別,使用URL上的最後一個世界(例如:P435345針對帖子,C935943針對類別[數字是id's])。是否有可能檢查URL的最後一個詞是否以.htaccess中的P或C開頭,將其他URL重定向到404?

回答

0

RewriteRule之前使用指令RewriteCond,因爲如果存在任何文件或目錄,它將不會重定向。例如。它不會將domain.com/index.php重定向到resources/pages/post-or-category.php

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
+0

謝謝!我在「任何」規則的基礎上添加了它,並且它工作正常。是否有重寫條件來阻止特定的文件請求,例如「resources/config.php」? –

+0

@ErenKara你可以使用''RewriteRule^resources/config.php $ - [R = 403,P]'。禁止「R = 403」。 – lkdhruw

+0

當我使用這個「RewriteRule^resources/config.php [R = 403,NC,L]」我在每一頁上都得到錯誤500。另外,我仍然需要從其他文件訪問config.php。這是否會阻止其他PHP文件的訪問? –