在我的原始帖子中,我似乎隐含了我的变量名称有一个连字符.我的问题似乎是下面的htaccess文件在连字符上没有匹配但我的$ _GET变量内容有一个连字符,而不是变量本身.
我最初引用了http://php.net/manual/en/language.variables.variable.php,用户声称不可能用连字符引用php变量(通过$ _POST或$ _GET),但这是写的在2009年.
在我的一个URL中,我允许用户输入一个唯一的ID作为"www.site.com/id123",其中"id123"被选为带有php的$ _GET变量.有些用户选择使用不起作用的"www.site.com/id-123"(除了页面之外没有找到服务器错误).
有什么想法吗?
RewriteEngine On
#if file or directory do not exist, try as an unique id
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z]+)$ index?ID=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
Run Code Online (Sandbox Code Playgroud)
通过更多思考,上面的重写规则似乎可能需要修改来处理连字符请求.这看起来是对的吗?
Lig*_*ica 14
您的.htaccess文件需要修改以支持连字符.
更改
RewriteRule ^([0-9a-zA-Z]+)$ index?ID=$1 [QSA,NC,L]
Run Code Online (Sandbox Code Playgroud)
至
RewriteRule ^([0-9a-zA-Z-]+)$ index?ID=$1 [QSA,NC,L]
Run Code Online (Sandbox Code Playgroud)
字符串的内容可能包含连字符.变量的名称可能不会.
在您的问题中,不清楚HTTP查询字符串的位置.$_GET['some-variable']很好,因为数组键是一个字符串.$my-var不行
如果您的页面请求不起作用,则更有可能是您的.htaccess文件出现问题.