3

好的,伙计们,我遇到了一个让我发疯的问题。这是发生的事情:

我决定要重写我网站上的 URL。

它应该从此语法重写:

http://www.sample.com/programming.php?name=something

对此:

http://www.sample.com/tutorials/programming/something.php

或(例如 2):

http://www.sample.com/other.php?name=test

对此:

http://www.sample.com/tutorials/other/test.php

所以我的 URL 语法是:

http://www.sample.com/tutorials/ (我的文件名)/(变量名).php

我尝试了以下代码:

RewriteEngine On
RewriteRule ^tutorials/programming/(.+)$ /programming.php?name=$1 [L]
RewriteRule ^tutorials/other/(.+)$ /other.php?name=$1 [L]

但是,它没有正确地重写 URL。详细解释如下:

所以,当我访问我的原始网站时,它看起来像这样:

http://www.sample.com/programming.php?name=something

如果我访问此 URL:

http://www.sample.com/tutorials/programming/something.php

我得到了我的网站 HTML,但没有我的 CSS 布局(仅显示 HTML)。此外,如果我单击非 CSS 站点上的任何其他链接,我会收到错误 404。请注意,index.php 站点的 URL 不是应有的:

http://www.something.com/index.php(正确的 index.php URL)

但它是这样的:

http://www.sample.com/tutorials/programming/index.php(不存在)。

我已经在线阅读了 10 多个教程,请我的同事帮助我,但他的解决方案也没有奏效。所以,我想要完成的只是我的 URL 被重写,所以当用户在编程中选择一个教程时,我在地址栏中没有得到这个 URL:

http://www.sample.com/programming.php?name=something

但是这个 :

http://www.sample.com/tutorials/programming/something.php

这就是我想要的。

我试图尽可能详细。如果您需要更多详细信息,请告诉我。

提前致谢!

4

2 回答 2

2

我得到了我的网站 HTML,但没有我的 CSS 布局(仅显示 HTML)。此外,如果我单击非 CSS 站点上的任何其他链接,我会收到错误 404。请注意,index.php 站点的 URL 不是应有的:

由于额外的斜线,您在页面内容中拥有的相对/绝对路径得到了不同的基础。当你有类似的东西<img src="images/blah.gif">时,相对基础来自浏览器看到的 URL(不是服务器内部重写的内容)。因此,如果浏览器看到:http://www.sample.com/programming.php?name=something,则 URI 是/programming.phpURI base 是/。但是,如果浏览器看到http://www.sample.com/tutorials/programming/something.php,则 URI 是/tutorials/programming/something.php并且 URI 基变为/tutorials/programming/,我假设这不是您的 images/css/scripts/etc 所在的位置(因为该目录可能甚至不存在)。

您需要通过添加以下内容来更正所有页眉中的 URI 基数:

<base href="/">

或者将所有相对链接更改为绝对链接。

于 2012-09-13T17:22:24.733 回答
0

我得到了我的网站 HTML,但没有我的 CSS 布局(仅显示 HTML)

你是如何包含CSS的?你有没有在路上包含你的文件

../../css/file.css

或绝对模式

/css/file.css?

检查真正的问题是什么(我猜你的任务重写成功,例如我没有正确理解它)你能给我们真正的uri吗?

于 2012-09-13T17:22:51.737 回答