如何解决.htaccess重定向子目录作为php中的查询字符串
| 这很难解释,所以希望我对我的问题有所了解。 (1)我想创建\“ SEO friendly \”链接以从网站中删除查询字符串。只有一个变量,我们将其称为\“ page \”。这是我的.htaccess
文件的以下代码。
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ index.php?page=$1
这可以提供正确的重定向。因此,/applications/
将发送到index.php?page=applications
。
(2)我的index.php将包含一个基于$_GET[\'page\']
值的视图页面。以下是一些示例代码:
switch ($_REQUEST[\'page\']) {
default:
include (\"home.php\");
break;
case \"apps\":
include (\"apps.php\");
break;
}
到目前为止似乎还没有问题。
(3)让我们将apps.php
精确地复制为home.php
。 home.php可以很好地加载,但是apps.php
不会加载链接的CSS和JScript页面。装入apps.php
时,会认为它位于/apps/
目录中。要加载链接的页面,我需要在文件名之前插入\“ ../ \”。然后它正确显示。
所以我的问题是-如何正确地编写.htaccess
文件,以便home.php
和apps.php
页可以是相同的文件并产生相同的结果,而不是将apps.php
文件视为在/apps/
目录中一样?
解决方法
首先,我应该道歉,因为我没有涉及更改htaccess的解决方案。我的解决方案具有不同的性质。
我认为,如果您有一个config变量(最好是在一个配置文件中)可以解决问题,该文件将保存图像,js等的根文件夹。大多数情况下,它的public_html,文档根目录,网站的网址指向至。因此您的配置变量可能如下所示:
$base_url = \'http://www.mywebsite.com/\';
配置文件应无条件地包含在index.php中。
因此,当您包含任何js或图像时,您将像这样进行操作:
<script type=\"text/javascript\" src=\"<?php echo $base_url;?>js/global.js\" />
<img src=\"<?php echo $base_url;?>images/gradient_green.jpg\" />
如果将配置文件包含在index.php中,则根据切换情况,所包含的所有文件都将能够使用$ base_url变量。
另一种可能的解决方案是使用基本标签。在这里查找:
http://www.w3schools.com/TAGS/tag_base.asp
我希望这有帮助。
, 对网页上的js,css和图片使用绝对网址(以斜杠开头)。
/js/main.js而不是js / main.js
, 除非进行外部重定向(通过将[R]标志添加到RewriteRule中),否则无法使用.htaccess进行操作。但是,然后您公开查询字符串,这是您首先要避免的字符串。
无法完成的原因:不是“ apps.php”“认为它在/ apps /目录”中,而是“浏览器”在“ apps /”目录中。在apps.php生成的页面源中,您将相对URL发送回浏览器,现在浏览器将请求相对于其所请求页面位置的这些资源。对于浏览器,无论您在服务器端内部进行了何种重写,它都在/ apps /目录中。
因此,您有以下选择:
使用.htaccess进行外部重定向(并破坏您的初衷;-)
如您所说,在处理apps.php等的同时,用PHP动态更改URL(在URL前面加../)
使用绝对URL,就像@nobody在他的答案中建议的那样。
最后一个是唯一的真实选择恕我直言。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。