首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要.htaccess模块重写帮助

需要.htaccess模块重写帮助
EN

Stack Overflow用户
提问于 2014-11-23 02:25:12
回答 1查看 30关注 0票数 0

我已经写了这小段代码。我对此非常陌生,所以我不确定它是否都是正确的。但基本上它允许我使用php扩展名访问urls。当人们进入网站时,他们会从地理ip页面被重定向到正确的语言,如下所示

main.php?lang=uk或nl或en或eu等。

现在我也可以像这样使用它

main/?lang=uk或nl或en或eu等。

我希望能够也删除在网址?lang=uk的变量。

我该怎么做呢。我的.htaccess代码如下

代码语言:javascript
运行
复制
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
DirectorySlash On

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]

# remove trailing slash
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
RewriteRule ^([\w\/-]+)(\?.*)?$ $1.php$2 [L,T=application/x-httpd-php]



</IfModule>

也感谢任何愿意提供帮助的人。

EN

回答 1

Stack Overflow用户

发布于 2014-11-23 15:56:20

RewriteRule的第一个参数匹配域名和前缀*之后以及任何查询字符串之前的任何内容。在http://localhost/this/is/my/test?lang=123中,如果this/is/目录中有一个.htaccess文件,它将与my/test匹配。要匹配查询字符串,必须使用%{QUERY_STRING}变量。

如果RewriteRule的第二个参数(重写的url)不包含查询字符串,它会自动将原始url的查询字符串附加到新url。

在下面的代码中,我使用了%{THE_REQUEST}。这是用于发出页面请求的字符串。它以GET /my/resource?query=string HTTP/1.1的形式出现。它在重写东西时不会改变,这使得它对防止无限循环很有用。

在php文件中,确保从cookie而不是get变量读取语言,然后执行以下操作:

代码语言:javascript
运行
复制
#Set cookie for language
RewriteCond %{QUERY_STRING} ^(.*?)&?lang=([^&]+)&?(.*?)$
RewriteRule ^ %{REQUEST_URI}?%1&%3 [CO=lang:%2:127.0.0.1:1:/:0:1,R,L]

#Remove potential prefix or suffix & from query string
RewriteCond %{QUERY_STRING} ^&(.*?)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*?)&$
RewriteRule ^ %{REQUEST_URI}?%1 [R,L]

#External requests with \.php should be without that.
RewriteCond %{THE_REQUEST} \.php
RewriteRule ^(.*)\.php$ $1 [R=301,L]

#Try to load php page if resource does not alreay have an extension
RewriteCond %{REQUEST_URI} !\.[a-z]+$
RewriteRule ^(.*)$ $1.php [L]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27080892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档