簡體   English   中英

.htaccess 使用 session 變量重寫作為 RewriteBase

[英].htaccess rewrite using session variables as RewriteBase

我目前正在使用子域將客戶細分到他們自己的網站 - 這只是為了在 URL 中顯示客戶名稱。但是,沒有必要使用子域。 相反,我想擁有 1 個網站並重寫 url,以便他們每個客戶的名稱在 URL 中顯示如下: https://test.com/CLIENT_NAME/index.php

當客戶端第一次訪問https://test.com/CLIENT_NAME/時如果session變量“CLIENT_NAME”,isset。 我想將它們路由到 test.com/index?php?id=CLIENT_NAME(但保持 URL 顯示為https://test.com/CLIENT_NAME/ )所以我可以使用 $_GET 變量從“id”到從數據庫中獲取數據並設置 session 變量。

一旦登錄並設置了 CLIENT_NAME 的 session 變量,我只想重寫每個 URL 以在基域之后有 /CLIENT_NAME/,但實際上該站點將所有頁面都當作它只是基域(沒有 /CLIENT_NAME/ ).

例如,一旦登錄:URL 將顯示為 test.com/CLIENT_NAME/page_1,但服務器將訪問存儲在根 public_html 文件夾中的文件,該文件夾通常通過訪問 test.com/page_1.php 來訪問。

同時,最好從每個網頁的末尾刪除“.php”(如上例)。

感謝你的協助!

我已經嘗試了在這里找到的各種其他示例,但似乎每個人都為 RewriteBase 使用固定參數,而不是檢查 session 變量以查看是否設置了某些內容,然后將該值用作 RewriteBase,如果是的話,或將用戶重定向到 GET 請求(屏蔽 url)以設置 session 變量。

你不會相信這一點,但我在 ChatGPT 的幫助下設法找到了答案 哈哈

它給了我這個:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/portals/
RewriteRule ^([^/]+)/(.*)$ /index.php?folder=$1&path=$2 [L,QSA]

我改成了這個:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/portals/
RewriteCond %{REQUEST_URI} !^/portals/index.php
RewriteCond %{REQUEST_URI} !^/includes/
RewriteCond %{REQUEST_URI} !^/home/
RewriteRule ^([^/]+)/(.*)$ portals/$2?portalID=$1&path=$2 [L,QSA]

謝謝大家的幫助!

暫無
暫無

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

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