我想將所有流量重定向到單一 .php 網關文件,該文件將進行身份驗證並使用 ajax 來提取所要求的文件。
所以我需要一個有以下流程的 .htaccess:
if external request for any file
redirect (or rewrite) to /gateway.php
gateway.php 然後需要能夠存取該檔案。
這是我想出來的最好的方法是:
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_HOST} !^127\.0\.0\.1
RewriteCond %{REQUEST_URI} !/gateway\.php$
RewriteRule .* http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]
這是可行的,但是當 gateway.php 上的 ajax 嘗試從另一個頁面獲取內容時,它會從 gateway.php 獲取內容(因為重定向)。我需要以某種方式添加一個例外!
任何幫助將不勝感激!
答案1
你不需要那裡的 RewriteBase,試試看這個:
RewriteEngine on
RewriteRule ^/gateway\.php$ - [L]
RewriteCond %{REMOTE_HOST} ^127\.0\.0\.1
RewriteRule ^(.*)$ - [L]
RewriteRule ^(.*)$ http://www.website.com/gateway.php?req=%{REQUEST_URI} [R=302,L]
首先,您明確表示如果要求 gateway.php,請停止。然後你說如果它來自本機主機,只需執行 URL,否則執行重新導向。您可能會受到某種內部重定向機制的影響,您可能必須快速設定 RewriteLog 和 RewriteLogLevel 才能偵錯 Apache 正在採取的操作。