Php url在路由索引中重写

时间:2015-04-23 19:35:40

标签: php .htaccess

我一直在搜索这个网站好几天,并尝试了一切来解决我的问题,但它仍然存在。我已编码自己的cms,现在我需要重写所有网址。具体问题是我有一点访问槽index.php如index.php?go=users&task=add_friend现在我试图重写网址只有{{1和类似但总是得到没有CSS样式和JavaScript的主页。我最后一次试图做到正确

/users/add_friend

提前预订

2 个答案:

答案 0 :(得分:1)

你可以试试这样的事吗?

RewriteEngine On
RewriteBase /mysite/

# passthrough anything that maps to a file/dir
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?go=profile&id=$1 [QSA,L]
RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$ index.php?go=$1&task=$2 [QSA,L]

至于您的css / js问题,您的链接可能都是相关链接,当您在网址中有更多深度(更多/)时,您的相对网址基础会发生变化,您的任何相关链接都会更改被打破了。您可以将它们全部设为绝对链接,也可以在页面标题中添加相对URL基础:

<base href="/" />

答案 1 :(得分:0)

那是因为一旦你进行了重写,你需要

使用head部分中的BASE标记。

<base href="/">

或使用CSS和JS的完整路径

<link rel="stylesheet" type="text/css" href="/full/path/to/style.css">

然后你的css和JS会出现。

此外,您只需要2个规则即可使/成为可选项。你可以这样做。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9-]+)/?$  index.php?go=profile&id=$1   [QSA,L]