0

我想从“子目录”URL 中删除文件名,只在浏览器 URL 中显示子目录。

所以:www.domain.com.au/login/public_index.php

变成:

www.domain.com.au/login/

我已经尝试了这个网站和互联网上的各种解决方案,但都没有奏效。

如果可能的话,我想把新的重定向放在根 htaccess 文件中??而不是在子目录 htaccess 文件中?

*万一 htaccess 文件中的其他重定向与任何新的子目录重定向冲突,以下是 htaccess 文件中执行重要工作的其他(和必要的)重定向:

#(1) A redirection to remove root level index.php from the url
# Redirect index.php to domain.com.au
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.domain.com.au/ [R=301,L]

#(2) 
# Redirect   domain.com.au    to    www.domain.com,au
RewriteCond %{HTTP_HOST} ^domain.com.au [NC]
RewriteRule ^(.*)$ http://domain.com.au/$1 [L,R=301]

#(3)
# Force SSL on login directory
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} login 
RewriteRule ^(.*)$ https://www.domain.com.au/$1 [R,L]

任何帮助将不胜感激,因为到目前为止添加新子目录 URL 重定向的所有解决方案都失败了。

问候,

彼得

4

1 回答 1

0

你可以做一些类似于你所做的事情#(1)

#(4)
# remove public_index.php 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+)/public_index\.php\ HTTP/
RewriteRule public_index\.php$ http://www.domain.com.au/%1/ [R=301,L]

# internally add it back
RewriteCond %{REQUEST_URI} ^/([^/]+)/?$
RewriteCond %{DOCUMENT_ROOT}/%1/public_index.php -f
RewriteRule ^ /%1/public_index.php [L]

这适用于任何子目录,但如果您只对 感兴趣login,那就更容易了:

#(4)
# remove public_index.php 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /login/public_index\.php\ HTTP/
RewriteRule public_index\.php$ https://www.domain.com.au/login/ [R=301,L]

RewriteRule ^/?login/?$ /login/public_index.php [L]   
于 2012-08-03T15:25:54.520 回答