目前我的工作是将我的网站转移到SEO友好的URL(在localhost中),
这是带有查询字符串的原始网址:
http://{ip}/sitename/item.php?category=44
我想转换为:
http://{ip}/sitename/item/category/44
.htaccess 文件(与item.php相同的目录):
DirectoryIndex index.php
Options -Indexes
<files page>
ForceType application/x-httpd-php
</files>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^.*$ item.php%{REQUEST_URI} [L]
RewriteRule ^/item/([0-9]+) /item.php?category=$1
</IfModule>
<Files *htaccess>
Deny from all
</Files>
在item.php
中,我使用$_GET['category']
$category = preg_replace('/[^0-9]/', '', $mysqli->real_escape_string($_GET['category']));
$list = $listing->get_items($category, $mysqli);
if($list == 0){
echo '<p><h2>Page not found</h2></p>';
die();
}
问题1:
当我加载http://{ip}/sitename/item/category/44
时,页面无法将变量传递给get_item()
,页面显示为Page not found
?假设44返回一个值。
问题2:
我的页面没有加载引荐来源文件,所有*.css
*.js
等都被忽略了?
答案 0 :(得分:1)
在.htaccess文件中尝试此操作:
Options +FollowSymLinks
RewriteEngine on
RewriteRule item/category/(.*) item.php?category=$1
答案 1 :(得分:0)
问题1:这里没有重写 - (你只认为它有,因为你的脚本item.php
无论如何都被调用了,因为你在URL中有item
并且MultiViews完成了它的工作) - RewriteRules在.htaccess中匹配的路径从不以/
开头,所以将其删除。
问题2:之前已经讨论了很多次(并且对于知道相对URL如何工作的基础知识的人来说也应该是显而易见的) - 参见f.e. .htaccess URL Rewrite Problem (Scripts don't load)
答案 2 :(得分:0)
问题2 - 由于您没有提到基本路径,因此出现了问题。
您需要指定基本路径来加载css和其他引用。
尝试在<head>
代码<base href="http://www.MYSITE.com/" />
这将加载你的css / js。
答案 3 :(得分:0)
RewriteEngine On RewriteBase / sitename
RewriteRule ^ item /([0-9] +)/?$ item.php?category = $ 1 [L,NC]