我是第一次从零开始构建一个动态网站,所以我是新手。
我需要匹配此网址:
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导致我到了一个错误的目录,但我不知道如何解决它。
所以我真的很困惑,问题出在哪里?!如果有人有线索的话,我将非常感激听到它。
感谢您的时间和考虑。
答案 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>