请帮我编辑我的.htaccess以允许网址中的连字符

JM4*_*JM4 2 php variables

更新

在我的原始帖子中,我似乎隐含了我的变量名称有一个连字符.我的问题似乎是下面的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"(除了页面之外没有找到服务器错误).

有什么想法吗?

的.htaccess

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)


Lig*_*ica 5

字符串的内容可能包含连字符.变量的名称可能不会.

在您的问题中,不清楚HTTP查询字符串的位置.$_GET['some-variable']很好,因为数组键是一个字符串.$my-var不行

如果您的页面请求不起作用,则更有可能是您的.htaccess文件出现问题.