Nat*_*ate 5 php .htaccess mod-rewrite url-rewriting
可能重复:
基于子域的Apache重写
是否可以重写这样的URL?
www.foo.website.com/some-page
Run Code Online (Sandbox Code Playgroud)
至
www.website.com/some-page?var=foo
Run Code Online (Sandbox Code Playgroud)
我问的是重写(我认为这就是所谓的),而不是重定向.即我希望第一个URL保留在地址栏中,但是服务器要"获取"第二个URL.
我从来不知道如何进行URL重写,到目前为止,我可怜的尝试让这个工作失败了:-)
我应该补充一点,这个.htaccess文件也被WordPress使用,并具有以下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /~kbj/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /~kbj/index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
任何帮助或建议将非常感谢!
我将解释的是多语言网站,但您可以很容易地将其应用于您所要求的内容:重命名“LANGUAGE ”重命名为“ var”(微笑)。
这就是您可能想要做的,以便能够在未来处理许多子语言。检查您的主机:如果它包含“已知语言”,请将其添加到全局变量中(从 Apache 的角度来看=环境变量),然后在最后,如果未设置“语言”变量,则将其设置为默认语言。最后,将其添加为参数。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.website\.com$
RewriteRule ^(.*)$ "http://www.website.com/$1?var=%1" [P]
RewriteCond %{HTTP_HOST} ^(www\.)?(us|fr|pt)\.mydomain\.com$
# Create an environment variable to remember the language:
RewriteRule (.*) - [QSA,E=LANGUAGE:%2]
# Now check if the LANGUAGE is empty (= doesn't exist)
RewriteCond %{ENV:LANGUAGE} ^$
# If so, create the default language (=es):
RewriteRule (.*) - [QSA,E=LANGUAGE:es]
# Add the language to the URI (without modifying it):
RewriteCond (.*) $1?language={ENV:LANGUAGE} [QSA]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
(注意:请,请......使用正确的缩进)。