.htaccess 仅重定向特定类型的静态内容?
.htaccess redirect only specific types of static content?
我希望将任何 .php 文件请求重定向到 index.php 或任何对不存在的目录或静态内容的请求也应该重定向到 index.php.
这就是我目前所拥有的。我只是不确定如何仅重定向 .php 文件而不重定向图像、css、js
等内容
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
根据您显示的示例,您能否尝试以下操作。请确保在测试 URLs 之前清除浏览器缓存。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
RewriteCond %{REQUEST_URI} \.php [NC]
RewriteRule ^ index.php [QSA,L]
JS/CS rewrite/redirect:
您可能需要使用 base 标记来修复您的 js 和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html 那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用 base 标记。在您网页的 header 中添加此 <base href="/">
以便您的相关链接可以从正确的位置加载。
我希望将任何 .php 文件请求重定向到 index.php 或任何对不存在的目录或静态内容的请求也应该重定向到 index.php.
这就是我目前所拥有的。我只是不确定如何仅重定向 .php 文件而不重定向图像、css、js
等内容 RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
根据您显示的示例,您能否尝试以下操作。请确保在测试 URLs 之前清除浏览器缓存。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
RewriteCond %{REQUEST_URI} \.php [NC]
RewriteRule ^ index.php [QSA,L]
JS/CS rewrite/redirect:
您可能需要使用 base 标记来修复您的 js 和其他相关资源。如果您使用相对路径链接 js 文件,那么该文件显然会得到 404,因为它正在寻找 URL 路径。例如,如果 URL 路径是 /file/ 而不是 file.html 那么您的相关资源将从 /file/ 加载,这不是目录而是重写的 html 文件。要解决此问题,请使您的链接成为绝对链接或使用 base 标记。在您网页的 header 中添加此 <base href="/">
以便您的相关链接可以从正确的位置加载。