通过了其他建议的问题,但没有运气。这些是我的。htaccess重写规则,主要是为了SEO和用户友好的目的:
Options +SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/(images|css|js|scripts/.*)$
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_URI} !.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^dictionary/(.*) dictionary.php [NC,L]
RewriteRule . /index.php [L]
RewriteRule ^dict/[^/]+/[^/]+/(.+)$ $1 [L]
</IfModule>
如果我取消重写规则的注释,所以任何请求www.xyz.com/dictionary和内部重写到www.xyz.com/dictionary.php,任何查询字符串添加到它,整个网站停止工作。
我想要的是任何请求的文件夹JS, CSS,图像和脚本不重写(所以我没有得到/dictionary.images/xyz.jpg)和php文件包含在dictionary.php不重写。
任何对一个已经存在的目录的请求都不会被修改,但是如果一个不存在的目录被重写到/index.php
我怎么能得到重写'假'目录重写,请?我有大约5个假目录,我想重写,CSS, JavaScript和图像是从正确的路径加载?
重写条件只适用于下一条规则。当你插入"字典"时在index.php
规则和上面的重写条件之间的规则,他们停止应用该规则并破坏您的网站。您需要将新规则添加到中的其他位置。
我建议增加新的行来强调哪些条件符合哪些规则。
您的dict
和dictionary
规则需要靠近顶部,以便这些路径不会被您的前控制器(index.php
)处理
试题:
Options +SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dict/[^/]+/[^/]+/(.+)$ $1 [L]
RewriteRule ^dictionary/(.*) dictionary.php [NC,L]
RewriteCond %{REQUEST_URI} !^/(images|css|js|scripts/.*)$
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_URI} !.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>