bki*_*kit 11 apache .htaccess mod-rewrite
我正在使用.htaccess文件将目录请求定向到自定义php文件,该文件提供有关该目录的信息(我希望浏览器显示的URL不会更改).
这是.htaccess文件的相关部分.
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ /myphp.php?url=%{REQUEST_URI} [QSA,L]
Run Code Online (Sandbox Code Playgroud)
如果您转到目录并包含尾部斜杠,这很有效:
http://domain.com/path/
Run Code Online (Sandbox Code Playgroud)
但没有尾随斜线,它没有
http://domain.com/path
Run Code Online (Sandbox Code Playgroud)
网址(在浏览器中显示)变为:
http://localhost:8888/path/?url=/path
Run Code Online (Sandbox Code Playgroud)
我试过通过在此规则之上添加规则来修复此问题:
RewriteCond %{REQUEST_FILENAME} -D
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L]
Run Code Online (Sandbox Code Playgroud)
但那不适合我.
如果省略了尾部斜杠,我怎么能得到.htaccess来添加尾部斜杠,然后就好像它已经存在一样?
谢谢
更新:根据要求,这是完整的事情.
<IfModule mod_rewrite.c>
RewriteEngine On
#force trailing slashes on real directories
RewriteCond %{REQUEST_FILENAME} -D
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L]
#use the directory viewer on directories without an index page
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ /myphp.php?url=%{REQUEST_URI} [QSA,L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
bki*_*kit 10
这一行:
RewriteCond %{REQUEST_FILENAME} -D
Run Code Online (Sandbox Code Playgroud)
本来应该:
RewriteCond %{REQUEST_FILENAME} -d
Run Code Online (Sandbox Code Playgroud)
不要打扰Mod Rewrite,它有一个指令
<Location /some/path>
DirectorySlash On
SetHandler some-handler
</Location>
Run Code Online (Sandbox Code Playgroud)
http://httpd.apache.org/docs/2.2/mod/mod_dir.html
| 归档时间: |
|
| 查看次数: |
29862 次 |
| 最近记录: |