【发布时间】:2014-12-05 12:32:45
【问题描述】:
我正在尝试解决一些 htaccess 问题,但无法找到解决方案。 我有以下html:
<a href="www.site.com/home.php?Idi="English">English</a>
<a href="www.site.com/home.php?Idi="Française">Française</a>
目标是用户直接进入地址栏:
www.site.com/home/English
或
www.site.com/home/Française
显然,get 变量应该到达 home.php 进行处理。
此外,该网站还有其他扩展名为 .php 的页面,我删除了每个扩展名:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
另外,我想要起始页:
www.site.com/home.php
将显示为:
www.site.com/home/English
我看过很多关于它的教程和帖子,但我无法解决它。
任何帮助将不胜感激,谢谢
已编辑:
最后,按照 UnskilledFreak 的建议,我将原始链接更改为:
<a href="www.site.com/home/English">English</a>
<a href="www.site.com/home/Française">Française</a>
htaccess 如下:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
#Receive site.com/home/Language and internally processes site.com/home.php?Idi=Language
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^home/(English)/?$ home.php?Idi=English [QSA,NC,L]
RewriteRule ^home/(Française)/?$ home.php?Idi=Française [QSA,NC,L]
#Receive site.com/something and internally goes to site.com/something.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
为了避免新页面加载css、js等链接崩溃,我在html的每条路径前都加了/。
htaccess 被放置在根目录中。 服务器中不存在“home”文件夹。
【问题讨论】:
-
在你的href中输入你希望用户显示的url,你的.htaccess必须将(.*).php(.*)重写为$1.php?get=$2,然后分解斜线$_GET[“获取”]。现在你将拥有一个包含所有参数的数组
-
也许我应该重新问这个问题,因为有更多的链接指向同一个 .php:法语
-
好吧,如果我没记错的话,我的帖子会这样做,在偏移量 1 的爆炸数组中,你会找到你想要的,偏移量 0 应该是“家”和 1“英语”或“法语” " 或输入的任何内容
-
我知道我应该将链接更改为 English 。但是如果链接不包含变量,如何用户的选项可以到达服务器吗?
-
好吧,如果链接是 www.site.com/home/english,并且您想使用我的解决方案,那么数组在偏移量 0“home”和 1“english”处保持 - 如果链接是 www.site.com/home/francaies 然后 1 是“francaise” - 但是如果 www.site.com/home 则未设置偏移量 1,因此请检查是否已设置,如果未设置偏移量 1 为例如英语默认情况下
标签: apache .htaccess mod-rewrite url-rewriting