我有一个网站已经定义了htaccess使网址很好
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
Options -indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
一切正常(根文件夹中有cms)。
现在我想在root中创建一个文件夹并为其制定另一个规则:
DirectoryIndex index.php
RewriteEngine On
RewriteBase /
Options -indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !tip [NC]
RewriteRule (.*) index.php [NC]
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^tip/([^/]+)/? /tip/?id=$1
所以我想重定向来自网址的所有内容:.../tip/?id=N
- > ../tip/N
它似乎工作正常,id传递,数据加载但是。网站内的所有网址都是错误的(javascript,css)。它们没有加载。
例如,代码:<script defer src="js/filtrify.js"></script>
生成:http://wincode.org/tip/js/filtrify.js
但是如果您尝试在另一个标签中加载它,它会将js/filtrify.js
作为id
参数传递,我认为。如何解决这个问题?
答案 0 :(得分:2)
一个。在$ DOCUMENT_ROOT / .htaccess:
中将.htaccess代码更改为此代码DirectoryIndex index.php
RewriteEngine On
RewriteBase /
Options -indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (?!^tip(/.*|)$)^.*$ /index.php [L,NC]
B中。在$ DOCUMENT_ROOT / tip / .htaccess中将.htaccess代码更改为:
DirectoryIndex index.php
RewriteEngine On
RewriteBase /tip
Options -indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^([^/]+)/?$ /tip/?id=$1 [L,QSA]
答案 1 :(得分:0)
我刚刚改进了一点anubhava回复,这个是基于根文件夹的例子,但是你可以对你需要的其他目录使用相同的方法。
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
Options -indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (?!^tip(/.*|)$)^.*$ /index.php [L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
# Mod_rewrite not installed, redirect all 404 errors to index.php.
ErrorDocument 404 index.php
</IfModule>