Apache mod_rewrite 不允许加载图像(和其他资产)
Apache mod_rewrite not letting images (and other assets) be loaded
现在这是我的 .htaccess 文件:
AddHandler application/x-httpd-php .php .ru
DirectoryIndex tsuki.ru index.html
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /tsuki/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [L]
# Rule to display data via ID
RewriteRule ^([^/]+)/([0-9]+)/?$ tsuki.ru?uri=&id= [QSA,L]
# Display actions from controller
RewriteRule ^([^/]+)/([^/]+)/?$ tsuki.ru?uri=&action= [QSA,L]
# Display specific ID for edit
RewriteRule ^([^/]+)/edit/([0-9]+)$ tsuki.ru?uri=&action=edit&id= [QSA,L]
# Destroy specific ID
RewriteRule ^([^/]+)/destroy/([0-9]+)$ tsuki.ru?uri=&action=destroy&id= [QSA,L]
# Display controller only
RewriteRule ^(.*)$ tsuki.ru?uri= [QSA,L]
当我删除这些重写规则时,图像和其他资产加载正常(JS、CSS 等)。我如何调整我的重写,以便可以使用相对路径加载资产?
您的两个 RewriteCond
仅适用于下一个规则。
这意味着您的所有资产都可能使用此规则重写
RewriteRule ^(.*)$ tsuki.ru?uri= [QSA,L]
你可以用这种方式重构你的代码
AddHandler application/x-httpd-php .php .ru
DirectoryIndex tsuki.ru index.html
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /tsuki/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rule to display data via ID
RewriteRule ^([^/]+)/([0-9]+)/?$ tsuki.ru?uri=&id= [QSA,L]
# Display actions from controller
RewriteRule ^([^/]+)/([^/]+)/?$ tsuki.ru?uri=&action= [QSA,L]
# Display specific ID for edit
RewriteRule ^([^/]+)/edit/([0-9]+)$ tsuki.ru?uri=&action=edit&id= [QSA,L]
# Destroy specific ID
RewriteRule ^([^/]+)/destroy/([0-9]+)$ tsuki.ru?uri=&action=destroy&id= [QSA,L]
# Display controller only
RewriteRule ^(.*)$ tsuki.ru?uri= [QSA,L]
注意:不要忘记对所有资源(图像、js、css、href 链接等)
现在这是我的 .htaccess 文件:
AddHandler application/x-httpd-php .php .ru
DirectoryIndex tsuki.ru index.html
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /tsuki/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ - [L]
# Rule to display data via ID
RewriteRule ^([^/]+)/([0-9]+)/?$ tsuki.ru?uri=&id= [QSA,L]
# Display actions from controller
RewriteRule ^([^/]+)/([^/]+)/?$ tsuki.ru?uri=&action= [QSA,L]
# Display specific ID for edit
RewriteRule ^([^/]+)/edit/([0-9]+)$ tsuki.ru?uri=&action=edit&id= [QSA,L]
# Destroy specific ID
RewriteRule ^([^/]+)/destroy/([0-9]+)$ tsuki.ru?uri=&action=destroy&id= [QSA,L]
# Display controller only
RewriteRule ^(.*)$ tsuki.ru?uri= [QSA,L]
当我删除这些重写规则时,图像和其他资产加载正常(JS、CSS 等)。我如何调整我的重写,以便可以使用相对路径加载资产?
您的两个 RewriteCond
仅适用于下一个规则。
这意味着您的所有资产都可能使用此规则重写
RewriteRule ^(.*)$ tsuki.ru?uri= [QSA,L]
你可以用这种方式重构你的代码
AddHandler application/x-httpd-php .php .ru
DirectoryIndex tsuki.ru index.html
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /tsuki/
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Rule to display data via ID
RewriteRule ^([^/]+)/([0-9]+)/?$ tsuki.ru?uri=&id= [QSA,L]
# Display actions from controller
RewriteRule ^([^/]+)/([^/]+)/?$ tsuki.ru?uri=&action= [QSA,L]
# Display specific ID for edit
RewriteRule ^([^/]+)/edit/([0-9]+)$ tsuki.ru?uri=&action=edit&id= [QSA,L]
# Destroy specific ID
RewriteRule ^([^/]+)/destroy/([0-9]+)$ tsuki.ru?uri=&action=destroy&id= [QSA,L]
# Display controller only
RewriteRule ^(.*)$ tsuki.ru?uri= [QSA,L]
注意:不要忘记对所有资源(图像、js、css、href 链接等)