Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .HTB标志的替代方案?(转义反向引用)_Php_Regex_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Php .HTB标志的替代方案?(转义反向引用)

Php .HTB标志的替代方案?(转义反向引用),php,regex,apache,.htaccess,mod-rewrite,Php,Regex,Apache,.htaccess,Mod Rewrite,我使用以下设置了.htaccess: RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?aid=$1 [L,QSA] 这会得到一个用户档案,但是如果他们的用户名是“apple&pears”,我会得到一个404页面。我相信这是由于符号的编码问题造成的。我已经研究并发现B标志可以解决这个问题,但是引入B标志时,我主机

我使用以下设置了.htaccess:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?aid=$1 [L,QSA]
这会得到一个用户档案,但是如果他们的用户名是“apple&pears”,我会得到一个404页面。我相信这是由于符号的编码问题造成的。我已经研究并发现B标志可以解决这个问题,但是引入B标志时,我主机的Apache版本低于2.2.7


有什么方法可以复制这个吗?

有两个单独的规则,如下所示:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^&]+)&([^/]+)/?$ /index.php?aid=$1\%26$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /index.php?aid=$1 [L,QSA]

有两条单独的规则,如下所示:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^&]+)&([^/]+)/?$ /index.php?aid=$1\%26$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ /index.php?aid=$1 [L,QSA]

如果只有一个符号,那么这个问题就解决了,如果有多个符号呢?你写了一个用户配置文件,这些都是真实的用户名。想想
用户名
里面到底有多少个
&
?真正的解决方案是使用<代码> b>代码>标志,但认为这是一种解决方案。我理解,但它不是一般用户。如果不放弃我的项目,我真的不能说。但是,如果用户也包含了空间呢。假设这是一个用户名,“Robert Smith-&-Kline”
Robert Smith-&-Kline
可以正常工作,甚至
Robert Smith&Kline
也可以正常工作。空格或连字符都可以,希望你们自己也能试试。我已经试过了,但当404页上有一个符号和时,我找不到它。但是,像“Robert Smith”这样的用户名可以很好地加载。如果只有一个符号,那么这就解决了问题。如果有多个符号呢?你写的是一个用户配置文件,这些是真实的用户名。想想
用户名
里面到底有多少个
&
?真正的解决方案是使用<代码> b>代码>标志,但认为这是一种解决方案。我理解,但它不是一般用户。如果不放弃我的项目,我真的不能说。但是,如果用户也包含了空间呢。假设这是一个用户名,“Robert Smith-&-Kline”
Robert Smith-&-Kline
可以正常工作,甚至
Robert Smith&Kline
也可以正常工作。空格或连字符都可以,希望你们自己也能试试。我已经试过了,但当404页上有一个符号和时,我找不到它。但是,像“Robert Smith”这样的用户名可以加载。