gob*_*lar 17 apache .htaccess mod-rewrite
我试着看看stackoverflow但我找不到我的答案.
所以我需要找出哪个域是用户是哪个子域以及正在加载哪个页面.
例如:en.domain.com/contactus
这应该加载英文联系我们页面.
我拥有的是:
RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC]
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC]
RewriteCond %{HTTP_HOST} ^en.domain.com$ [NC]
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC]
RewriteCond %{HTTP_HOST} ^fr.domain.com$ [NC]
RewriteRule ^(.*)$ index.php?lang=fr&page=$1 [L,NC]
#etc...
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,当我回显get for page时,值为:index.php所以我无法读取页面.
Boo*_*eus 18
这是你应该使用的:
RewriteEngine On
RewriteBase /
SetEnvIf Host ^www\. lang=en
SetEnvIf Host ^en\. lang=en
SetEnvIf Host ^fr\. lang=fr
RewriteCond %{REQUEST_URI} !\.(css|png|gif|jpe?g|js)$ [NC]
RewriteRule ^([a-z0-9_\-]+)/?$ index.php?lang=%{ENV:lang}&page=$1 [L,NC,QSA]
Run Code Online (Sandbox Code Playgroud)
在%{ENV:lang}
将读取的SetEnvIf
(从子域),并设置正确的语言,你会从中获取$_GET['lang'];
(在你的PHP代码-假设它的PHP)
这样,任何子域都将被动态加载,而不会为子域反复创建规则.我还添加了一个规则,阻止将图像或JavaScript加载为页面.
归档时间: |
|
查看次数: |
198 次 |
最近记录: |