我有一个页面是www.example.com/page_name.php?var1=dynamic_var1&var2=dynamic_var2
我想使用.htaccess文件使其看起来像这样 www.example.com/page_name/dynamic_var1/dynamic_var2
到目前为止我已尝试过这个
RewriteRule ^page_name/(.*)/(.*)$ page_name.php?var1=$1&var2=$2 [NC]
问题是当它转到数据库时就像这样
SELECT * FROM table_name WHERE id=dynamic_var1/dynamic_var2.php/dynamic_var1 LIMIT 1
我也试过这个
RewriteRule page_name/(\w+)/(\w+) page_name.php?var=$1&var2=$2
它正在加载页面但没有任何图片或css文件或任何东西,当我使用firebug它说它无法加载给定的URL。
当我尝试这个时
RewriteRule ^page_name/(\w+)/(\w+)$ page_name.php?var=$1&var2=$2
它给了我内部服务器错误
提前致谢,
答案 0 :(得分:1)
请勿尝试从.htaccess
文件中拆分网址。为什么不尝试将整个查询字符串传递给您想要的index.php
或任何其他脚本,并在那里解析请求...
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
更简单的方法是简单地将所有请求重定向到index.php
文件,该文件执行类似的操作 -
index.php
-
给定http://yourdomain.com/user/123
$originalURL = $_GET['url'];
$URLParts = explode('/',$originalURL);
现在你有$URLParts
Array (
'user',
'123'
)
现在,您可以轻松地将这些值放在SQL查询中。
注意以进行SQL注入!始终使用mysql_real_escape_string()
并确保清理任何传入的数据......