gpt4 book ai didi

regex - htaccess regexp 下划线和空格不起作用

转载 作者:行者123 更新时间:2023-12-02 00:29:00 26 4
gpt4 key购买 nike

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 服务器中进行测试并且我也在我的本地主机 Apache 2.2.17 中进行了测试,同样发生了。

添加 _ 和空格或 .* 时给出的错误是这样的:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

提前谢谢你们。

最佳答案

来自 regular-expressions.info :

The only special characters or metacharacters inside a character class are the closing bracket (]), the backslash (\), the caret (^) and the hyphen (-). The usual metacharacters are normal characters inside a character class, and do not need to be escaped by a backslash.

除上述字符外,您不应转义字符集中的字符。这里的简单技巧是确保将连字符保留在字符类的最后。这将连字符标识为文字。

RewriteRule ^([a-zA-Z0-9'"%ãõáéíóúâêîôûàÁÃÕÁÉÍÓÚÂÊÎÔÛÀ _/.-]*)$ public_html/$1 [NC]

为避免“连续循环”,您可以在匹配规则之前包含此条件:

RewriteCond %{ENV:REDIRECT_STATUS} ^$

此外,如果您只是想像您所说的那样匹配所有内容,我通常会执行如下操作。请注意,%{QUERY_STRING} 用于传递任何 GET 变量。如果您不打算使用常规 GET 变量,则可以将其删除。

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^(.*)$ /index.php?request=$1&%{QUERY_STRING}

希望这些信息对您有所帮助。

关于regex - htaccess regexp 下划线和空格不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7744455/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com