簡體   English   中英

我如何使用htaccess和php控制多級子域

[英]how can i control multi level subdomains with htaccess and php

我有以下動態網址

http://foo.mydomain.com

我的.htaccess文件中有以下內容

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]

並且工作正常,並顯示與該foo子域相關的數據。 但是當我嘗試訪問

http://foo.mydomain.com/anything-9.html

其中foo是通配符DNS子域,而bla是我的帖子標題,而9是帖子ID

我已經添加了

RewriteRule ^/([^/]+)-([^/]+)\.html$ post.php?name=%2&post=$1&postid=$2 [PT,L]

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]

所以我的htaccess代碼成為

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www\.)?([a-z0-9-]+)\.domain\.com$ [NC]
RewriteRule !^index\.php($|/) sub.php?name=%2 [PT,L]
RewriteRule ^/([^/]+)-([^/]+)\.html$ post.php?name=%2&post=$1&postid=$2 [PT,L]

它仍然顯示其主頁,即sub.php而不是post.php。我應該對.htaccess文件進行哪些更改?

我只用PHP解決了這個問題。 對我來說,它比Apache .htaccess腳本更容易...也更易於維護(一旦編寫了腳本)並且具有更多功能。

我使用.htaccess將所有訪問重定向到一個文件。 這個使用$ _SERVER [“ SERVER_NAME”]變量檢查訪問的子域,其余使用$ _GET [“ q”]中的變量。

這是.htaccess文件:

RewriteEngine on
RewriteRule ^redir.php$ redir.php [L,QSA]
RewriteRule ^(.*)$ redir.php?q=$0 [L,QSA]

第一個確保沒有無限循環,第二個將所有內容重定向到文件。

然后,redir文件包含所需的任何文件,而且也很簡單-$ _SERVER [“ QUERY_STRING”],$ _ GET變量設置為新值,cwdir更改工作目錄(文件),set_include_path(包含路徑)。

有用。 但這有點愚蠢:D

您是否真的需要在此處添加2個問號:post.php ?? name =%2&post = $ 1&postid = $ 2

暫無
暫無

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

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