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 301 将根目录重定向到子目录

.htaccess - 将所有 URL + 现有目录重定向到 index.php

使用 .htaccess 将所有子域和子目录重定向到索引页面

将所有子目录页面重定向到 .htaccess 中的新域主页

.htaccess将根目录重定向到子目录

Htaccess 将所有文件从一个域中的子目录重定向到另一个域