此网址正在被重写
http://domain.com/embed/slideshow-image-list.js
到这个
http://domain.com/code/embed/slideshow-image-list
当前的htaccess代码
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteRule ^embed/([^\.]+)\.js$ http://domain.com/code/embed/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]
目前已正确重写,但如果您访问.js网址,则会重定向到完整网址。
我只想在没有重定向的情况下进行映射
答案 0 :(得分:14)
不要在规则中提供域,只提供路径。使用完整域名时,它将被重定向。
RewriteRule ^embed/([^\.]+)\.js$ /code/embed/$1 [L]
或者,如果生成的路径不是真实文件并且应该由index.php处理,请在[L]
之后设置,以便执行下一条规则:
RewriteRule ^embed/([^\.]+)\.js$ /code/embed/$1
请注意,mod_rewrite guide表示以下内容,这似乎表明完整的URL路径没问题,但我相信它与ServerName进行比较,不一定是ServerAlias(我不是100%肯定,但我总是在进行非重定向重写时使用路径而不是完整的URL:
绝对网址
如果指定了绝对URL,mod_rewrite将检查主机名是否与当前主机匹配。如果是,则删除方案和主机名,并将生成的路径视为URL路径。否则,将对给定的URL执行外部重定向。要强制外部重定向回到当前主机,请参阅下面的[R]标志。