htaccess到漂亮的网址

时间:2014-03-25 11:30:50

标签: php regex apache .htaccess mod-rewrite

我正在尝试将“漂亮”的网址应用到我的网站。

ie:localhost/chess/game.php?id=10

localhost/chess/game/10

继承我的htaccess:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteBase /chess/
RewriteRule ^games$ games.php
RewriteRule ^new$ newgame.php
RewriteRule ^game/(\d+)*$ game.php?id=$1

它适用于游戏和新游戏,但对于游戏,它向我显示没有样式的页面并显示我的错误'没有游戏'

如何修复此htaccess? 我需要更改我在哪里读取get文件的php文件吗?

2 个答案:

答案 0 :(得分:1)

样式错误可能是由于您用于样式的路径。

如果您使用相对路径:styles/css.css那么这在主页上可以正常工作,但是如果您从/game/访问此文件,那么浏览器将在{{{{}}中查找该文件1}}

假设您的样式可以通过站点的根目录访问,您可以在css路由的开头添加game/styles/css.css,以便浏览器从根路径中提取它们。

示例:/

答案 1 :(得分:1)

这应该在您的/chess/.htaccess文件中:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /chess/

RewriteRule ^games/?$ games.php [L]
RewriteRule ^new/?$ newgame.php [L]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^game/(\d+)/?$ game.php?id=$1 [L,QSA]
  • 还要确保在css,js,images文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http://或斜杠/开头。

  • 您也可以尝试在页面的HTML标题中添加:<base href="/" />