2

过去几个小时一直在寻找解决方案,我想我会在这里问。

我正在寻找一种处理链接的方法,例如:

http://subdomain.domain.com/page/subpage/

所以它们被传递给服务器:

http://domain.com/index.php?subdomain=subdomain&page=page&subpage=subpage

index.php 可以用来显示正确的页面信息。

我可以让页面和子页面正常工作,但不知道如何获取子域。注意:如果没有子域,我希望该字段留空或包含默认值。

任何帮助将不胜感激。:)

编辑:
为了澄清,我希望第一个 URL 是用户看到的并且可以输入到地址栏中,第二个 URL 是当用户导航到第一个 URL 时服务器加载的页面。

我的 .htaccess 文件

Options +FollowSymlinks -MultiViews -Indexes

RewriteEngine On
RewriteBase /

# Remove 'www'
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# Add slashes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://resolutiongaming.com/$1/ [L,R=301]

# Subdomain redirect
RewriteCond %{HTTP_HOST} ^resolutiongaming.com$
RewriteRule ^webdev/$ http://webdev.resolutiongaming.com [R=301,L]
RewriteRule ^artwork/$ http://artwork.resolutiongaming.com [R=301,L]
RewriteRule ^music/$ http://music.resolutiongaming.com [R=301,L]

ErrorDocument 404 /error.php
4

1 回答 1

2

您可以在根目录中的一个 .htacces 文件中尝试此操作:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST}  ^(?:www\.)?([^\.]+)\.domain\.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  ^/([^/]+)/([^/]+)/?   [NC]
RewriteRule .*     http://domain.com/index.php?subdomain=%1&page=%2&subpage=%3  [R=301,L]

它将永久重定向:

http://subdomain.domain.com/page/subpage/或者http://www.subdomain.domain.com/page/subpage/

到:

http://domain.com/index.php?subdomain=subdomain&page=page&subpage=subpage

要使规则生效,/page/subpage/必须保留传入的 URL 方案:。

要将永久重定向替换为静默映射,请R=301从 [R=301,L] 中删除或将其替换R为临时重定向。

于 2013-01-28T11:20:27.863 回答