簡體   English   中英

htaccess:重定向,但如果是文件夾根目錄或index.html,則不重定向(防止循環)

[英]htaccess: Redirect, but not if folder-root or index.html (prevent looping)

我正在與htaccess進行斗爭,但發現了一些討論我的情況的頁面-但不完全是,因此我需要幫助。

我的網頁上有一個使用php的登錄系統。 因此,每個.html頁面在交付之前都必須發送到一個php-script,該腳本正在測試用戶是否已登錄,成功轉發到請求的.html頁面,而不是登錄頁面(index.html )。

我有不同的語言文件夾,並將.htaccess放在所有這些文件夾的根目錄中,並且我希望所有文件夾都只有一個.htaccess。

資料夾結構:

/ members-manager / web / $ country / 這里是.htaccess

這是使轉發檢查登錄成功的方法,但是出現了一個循環:

RewriteRule ^(.+)$ members-manager/service/validate-user-login-for-url.php?url=%{REQUEST_URI} [L,QSA] 

有小費嗎?

謝謝 !!

-------------更新,更具體地說明問題:-------------

我更好地描述該過程:

網址(例如“ www.domain.com/members-manager/web/en/launch.html”)

=>

.htaccess:->轉發到PHP以驗證登錄

=>

會員經理/服務/驗證用戶登錄-for-url.php?url =%{REQUEST_URI}

=>

PHP:用戶已登錄嗎? 如果是,請:轉發回原始URL(%{REQUEST_URI})

=>

網址(%{REQUEST_URI})

停。

但是:我的.htaccess重寫規則再次匹配,因此循環繼續進行:-(我如何編寫一個條件,在php腳本“來自”之后不再重寫URL?

如果我理解您說的沒錯,那么每個“國家/地區”文件夾中都有.htaccess文件,為避免該循環,您只需在路徑開頭添加/

RewriteRule ^(.+)$ /members-manager/service/validate-user-login-for-url.php?url=%{REQUEST_URI} [L,QSA]

但是,如果僅在根文件夾中放入一個.htaccess文件,然后將此規則添加到該.htaccess文件中,則可能是更好的解決方案

RewriteRule ^members-manager/web/(.+)/(.+)$ members-manager/service/validate-user-login-for-url.php?url=members-manager/web/$1/$2 [L,QSA]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM