0

我的 Apache 2.2 在端口“8080”上运行我想调用我的站点 URL http://www.example.in:8080/abc/xyz.html/index.php(xyz.html是一个文件夹)

作为 ....

http://www.example.in:8080/abc/xyz.html

任何人都可以帮我解决这个问题的.htaccess ..

笔记:

1)example.in:8080/abc/xyz.html/ 一切都很好,但我想避免最后的“/”。

2)我想避免 DirectorySlash 在 .htaccess 中尝试 DirectorySlash Off 导致 xyz.html 文件夹列表。

3)尝试 DirectorySlash off 和 Options -indexes RESULTED 403 Forbidden Error

4)尝试使用 DirectoryIndex index.php 结果在输入“/”时有效,但在没有“/”列出内容的情况下无效......

任何人都可以帮助我使用 .htaccess 代码.. 在此先感谢。

4

3 回答 3

0

DirectorySlash当您将其关闭时,存在固有的信息泄露安全问题。这意味着如果您将其关闭(并且您确实需要),您必须自己处理尾部斜线。所以是这样的:

DirectorySlash Off
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ /$1/ [L]

请注意,这实际上是在做同样的事情DirectorySlash,但不是重定向浏览器,而是在内部重写 URI 以添加尾部斜杠。这意味着就网络服务器而言,它就在那里,但浏览器看不到它。

然后,您可以检查index.php

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ (.*)/index\.php
RewriteRule ^(.*?)/?index.php$ /$1 [L,R=301]
于 2013-09-11T21:19:56.900 回答
0

这是我的 .htaccess 保存在 xyz.html 文件夹中

DirectorySlash Off
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ /$1/ [L]
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ (.*)/index\.php
RewriteRule ^(.*?)/?index.php$ /$1 [L,R=301]

结果是......它列出了目录内容。

于 2013-09-12T15:41:58.933 回答
0

这就是我修复它的方式

将波纹管代码添加到根文件夹 .htaccess

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^(abx/xyz.html)/?$ $1/index.php [L,NC]

并将以下代码添加到 xyz.html 文件夹中的 .htaccess 文件中

DirectorySlash Off
Directoryindex index.php
Options -indexes
于 2013-09-12T16:33:26.877 回答