htaccess 将目录名重定向到参数
Posted
技术标签:
【中文标题】htaccess 将目录名重定向到参数【英文标题】:htaccess Redirect directory name to parameter 【发布时间】:2014-03-06 22:38:09 【问题描述】:我想像这样重定向所有路径:
myurl.com/worldwide/en
myurl.com/worldwide/pt
myurl.com/worldwide/de
到:
myurl.com/worldwide/index.php?lang=en
myurl.com/worldwide/index.php?lang=pt
myurl.com/worldwide/index.php?lang=de
只是为了清楚/worldwide
之后路径名的动态重定向
实际上,理想情况下,我想保留原始网址(例如myurl.com/worldwide/de
),但以语言目录作为参数加载相同的 php 文件,但不确定这是否可行?
谢谢
【问题讨论】:
【参考方案1】:使用此代码
RewriteEngine On
RewriteBase /worldwide/
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?lang=$1 [L,QSA]
如果这对你有帮助,请告诉我
【讨论】:
几乎完美非常感谢!只需从^(.*)$ index.php?/lang=$1 [L,QSA]
中删除/
。 $1
解析为例如worldwide/en
而不是 en
但不是问题,我可以在 php 中将其删除。很高兴它也不会更改网址,谢谢
谢谢...请接受它作为答案来感谢您
我会(必须等待最少几分钟)
为什么我把/
放在最后,它没有加载任何外部资源(css、图片)?
@Dan the Man:对不起,我无法理解你。你能分享一下你想使用的代码吗【参考方案2】:
RewriteEngine on
RewriteBase /
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.php -f
RewriteRule ^ %REQUEST_URI.php [L,NC]
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME.php !-f
RewriteRule ^(.+)$ /index.php?page=$1 [L,QSA]
【讨论】:
这行得通。如果你添加一些解释为什么,你有我的投票。以上是关于htaccess 将目录名重定向到参数的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess - 将所有 URL + 现有目录重定向到 index.php