我正在创建规则以显示以下类型的地址:
main.php?cat=MyCategory
main.php?cat=MyCategory&sub=MySubcategory
main.php?cat=MyCategory&sub=MySubcategory&prod=MyProduct
作为
MyDomain.com/MyCategory
MyDomain.com/MyCategory/MySubcategory
MyDomain.com/MyCategory/MySubcategory/MyProduct
但存在两个问题:
第一个问题是所显示页面上的其他链接从错误的位置开始。
MyDomain.com/MyCategory/MySubcategory/MyProduct/newlink.html
应该引用到根目录,如下所示
MyDomain.com/newlink.html
第二个问题是,从第二/第三个URL级别,我的引用,如javascript,img src和css链接是错误的。它寻找这些文件相对于从上级URL。我该如何解决这个问题?
我的.htaccess文件
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ principal.php?cat=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ principal.php?cat=$1&sub=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ principal.php?cat=$1&sub=$2&prod=$3 [L]
已尝试:
RewriteCond %{REQUEST_URI} !^/newlink\.html$
但不管用,有什么办法吗?
1条答案
按热度按时间yruzcnhs1#
对于处理第4级.html格式URLs第一个查询,请尝试使用以下.htaccess规则文件确保在测试URL之前清除浏览器缓存
***对于JS/CS rewrite/redirect:***您可能需要使用base标记来修复您的js和其他相对资源。如果您使用相对路径链接js文件,那么文件显然会得到404,因为它在寻找URL路径。例如,如果URL路径是/file/而不是file.html,那么您的相对资源是从/file/加载的,它不是一个目录,而是重写的html文件。要修复此问题,请将您的链接设置为绝对链接或使用base标记。在网页的页眉中添加此
<base href="/">
,以便您的相对链接可以从正确的位置加载。