RewriteRule ^([A-Za-z0-9'"%ãõáéíóúâêîôûàÁÃÕÁÉÍÓÚÂÊÎÔÛÀ\/\.\-]*)$ public_html/$1 [NC]
我在这里使用这个正则表达式它工作得很好,但如果我举个例子:
RewriteRule ^([A-Za-z0-9 _'"%ãõáéíóúâêîôûàÁÃÕÁÉÍÓÚÂÊÎÔÛÀ\/\.\-]*)$ public_html/$1 [NC]
这在这里不起作用。因为空格和下划线,我想在正则表达式中包含空格和下划线,但它根本不起作用。我必须添加一些特别的东西吗?
这也不起作用:
RewriteRule ^(.*)$ public_html/$1 [NC]
我希望能够输入任何内容并在public_html文件夹中打开。
例如,我输入:www.mysite.com/site_1.php 然后它打开:www.mysite.com/public_html/site_1.php
此.htaccess表达式正在使用Apache 2.2.17在HostGator服务器中进行测试 我也在我的localhost Apache 2.2.17中进行了测试,同样的事情发生了。
添加_和空格或。*时给出的错误是:
内部服务器错误
服务器遇到内部错误或配置错误 无法完成您的请求。
请联系服务器管理员admin @ localhost并通知 他们发生错误的时间,以及你可能做过的任何事情 可能导致错误。
有关此错误的详细信息可能在服务器错误中可用 日志中。
提前谢谢你们。
答案 0 :(得分:3)
字符类中唯一的特殊字符或元字符是右括号(
]
),反斜杠(\
),插入符号(^
)和连字符({{ 1}})。通常的元字符是字符类中的普通字符,不需要用反斜杠转义。
除了上面提到的字符集之外,您不应该转义字符集中的字符。这里的简单技巧是确保将连字符保留在角色类的非常结束处。这将连字符标识为文字。
-
为了避免“连续循环”,您可以在匹配规则之前包含此条件:
RewriteRule ^([a-zA-Z0-9'"%ãõáéíóúâêîôûàÁÃÕÁÉÍÓÚÂÊÎÔÛÀ _/.-]*)$ public_html/$1 [NC]
另外,如果你只是想像你所说的那样匹配所有内容,我通常会做类似下面的事情。请注意,RewriteCond %{ENV:REDIRECT_STATUS} ^$
可以传递任何GET变量。如果您不打算使用常规GET变量,则可以删除它。
%{QUERY_STRING}
我希望这些信息可以帮助你。