【发布时间】:2021-12-01 14:44:37
【问题描述】:
已通过其他建议的问题,但没有运气。 这些是我的 .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),并且 dictionary.php 中包含的 php 文件不会被重写.
任何对现有目录的请求都不会被触及,但是如果一个不存在的目录被重写到/index.php
我怎样才能让重写的“假”目录被重写?我还有大约 5 个要重写的假目录,并且 CSS、JavaScript 和图像是从正确的路径加载的?
【问题讨论】:
-
您发布的代码已经将 CSS、JS 和图像排除在重写之外(除非 URL 路径以
dict开头)。您的实际问题是静态资源没有加载是因为浏览器从错误的 URL 路径深度请求它们吗?您是否使用静态资源的相对 URL 路径?如果是这样,请参阅网站管理员堆栈上的以下问题:.htaccess rewrite URL leads to missing CSS -
感谢怀特先生。我现在修改了路径,就好像文件在目录中一样,因为文件在站点根目录中并且有一个指向 css/abc.css 的 URL,但现在我将路径设置为 /css/abc.css 并且一切都很好。
标签: php apache .htaccess url-rewriting seo