如何组织您的网站,以便.htaccess工作

时间:2010-10-14 00:00:50

标签: .htaccess dynamic web

我是第一次从零开始构建一个动态网站,所以我是新手。

我需要匹配此网址:

www.domain.org/world/2.html

用这个:

www.domain.org/index.php?html=world&rss=2

为此我正在使用这个重写规则:

RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?html=$1&rss=$2 [L]

这应该有效,但事实并非如此!

如果我写:

RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?html=$1&rss=$2 [R]

网站将我重定向到正确的网址,一切正常。

然而,当我再次将修改器[R]更改为[L]时,我收到一个非常奇怪的页面。它与我需要的相同,但是没有加载css文件。因此,内部URL与我需要的不完全相同。当我回显$_GET[html]$_GET[rss]变量时,它们也是正确的变量。另外,当我从链接www.domain.org/world/2.html转到菜单中的另一个链接时,它的构建如下: www.domain.org/world/2.html/environment.html代替www.domain.org/environment.html

所以,我猜这个问题与我网站的组织有关。 .htacces位于一个目录中。模板和css文件位于另一个目录中,处理不同页面的.php文件位于不同的目录中。但话说再说

www.domain.org/index.php?html=world&rss=2 

完美的工作!可能.htaccess导致我到了一个错误的目录,但我不知道如何解决它。

所以我真的很困惑,问题出在哪里?!如果有人有线索的话,我将非常感激听到它。

感谢您的时间和考虑。

1 个答案:

答案 0 :(得分:0)

  

然而,当我再次将修改器[R]更改为[L]时,我收到一个非常奇怪的页面。它与我需要的相同,但未加载css文件。

我猜您使用相对URI来引用样式表。像这样:

<link rel='stylesheet' href='../screen.css'>

由于浏览器认为它位于目录/world/中,因此会在错误的目录中搜索。

解决方案:使用以/开头的绝对路径:

<link rel='stylesheet' href='/screen.css'>
<a href='/about/'>About us</a>