我正在使用php $_GET函数从数据库中调用参数。这些perameter通常在URL中是可变的。
例如 http://localhost:8080/series/dynamics/admin/cleanURL/Apple,其中 Apple 是数据库中的变量。
只要 GET 函数不遇到空格,这就可以正常工作,但是在现实生活中,我会有一些变量,例如"青苹果"、"红苹果"等。和网址会喜欢,
http://localhost:8080/series/dynamics/admin/cleanURL/Green%20Apple 在这种情况下,我收到 404 在此服务器错误中找不到请求的 URL。
我想实现的是能够将空格转换为连字符或+
。我已经通过strreplace
或urlencode()
完成了它,但是问题是我仍然无法摆脱404错误。
以防万一它与 htaccess 有任何关系,下面是我的代码
Options +MultiViews
Rewriteengine on
RewriteBase /series/dynamics/admin/cleanURL/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} /series/dynamics/admin/cleanURL/('S*)'s [NC]
Rewriterule ^('w+)/?$ index.php?product=$1 [L,QSA]
RewriteRule ^series/dynamics/admin/cleanURL/(.*)$ /$1 [L,NC,R]
#rewrite group and subgroup e.g. http://.../value1/value2/
Rewriterule ^([a-zA-Z0-9]+(.*)+)/([^/]+(.*)+)/?$ index.php?product=$1&subgroup=$2 [L,NC,QSA]
一个更好的问题是为什么要使用有空格的文件夹结构?我只是将文件的名称更改为类似Green_Apple,您的问题已解决。这是更好的做法。