我正在尝试组合一个 .htaccess 文件来执行以下操作:
1) 从以下地址重写 URL 参数:
www.domain.com/page.php?key0=val0&key1=val1 ...
至
www.domain.com/page.php/key0/val0/key1/val1 ...
2)删除 .php 扩展名,因此
www.domain.com/page.php
变为www.domain.com/page
最终结果应该是:
www.domain.com/page/key0/val0/key1/val1 ...
我拼凑了这个 .htaccess 并且它满足 1) 和 2) 但它有问题。
RewriteEngine on
ErrorDocument 400 /book/ServiceUnavailable
ErrorDocument 401 /book/ServiceUnavailable
ErrorDocument 404 /book/PageNotFound
ErrorDocument 500 /book/ServiceUnavailable
#change homepage /directory
DirectoryIndex index.php index.htm
#enable gzip compression
SetOutputFilter DEFLATE
RewriteRule ^([^/]+)/([^/]+)/([^/]+)(.*?)/?$ $1/$4?$2=$3 [L,QSA]
RewriteRule ^([^/]+)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC] [QSA] [L]
它有2个问题:
a) 我在某些图像和包含的 javascript 文件上收到 404 错误。我包含直接从 doc root 引用它们的 js 文件,但出现 404 错误:GET http://localhost/book/js/vendor/modernizr-2.6.2.min.js 404 (Not Found)
b) 当我在 URL 末尾键入斜杠时,我收到“内部服务器错误”错误:例如www.domain.com/page/
导致内部服务器错误。
有人可以通过调整我的规则以排除 .js、.png、.jpg 等文件并解决问题 b) 来帮助我吗?
谢谢!