我有这个问题:
RewriteEngine On
RewriteRule ^tuote/([^/]+) tuote.php?data=$1 [L]
它应该将服务器端的所有tuote/Something-Something
更改为tuote.php?data=Something-Something
(不是重定向),但似乎无效($_GET['data']
没有值)。
等问题:
我怎么能让这个1-Something-title-nice-title
去php
$first_part = "1";
$secnd_part = "Something-title-nice-title";
尝试爆炸,但在这种情况下不起作用。
---- ---- EDIT
谢谢你的回复。
我将htaccess文件更改为:
RewriteEngine On
RewriteRule ^tuote/(.+) tuote.php?data=$1 [L]
但仍为$_GET['data']
值为空。顺便说一句,我在父目录中有其他htaccess,也许它会影响代码?
其他htaccess文件包含内容:
<IfModule mod_php.c>
php_flag display_errors 1
</IfModule>
AuthUserFile /var/www/somepath/.htpasswd
AuthGroupFile None
AuthName "Kirjaudu sisään"
AuthType Basic
require valid-user
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
关于第二个问题,它开始起作用了。谢谢!
答案 0 :(得分:1)
在您的重写中,您所做的只是检查一次或多次正斜杠。您需要将其更改为:
RewriteEngine On
RewriteRule ^tuote/(.+) tuote.php?data=$1 [L]
对于第二个问题,看起来你只是想制作一个字符串:
$both_parts = $first_part . "-" . $sednd_part;
答案 1 :(得分:1)
RewriteRule
似乎没问题 - 请确保您在PHP代码中正确访问查询字符串参数。
至于你的另一个问题,添加limit
进行爆炸应该这样做:
list($first_part, $second_part) = explode('-', $string, 2);
有关详细信息,请参阅explode
的PHP文档。
答案 2 :(得分:1)
RewriteRule ^(.*)$ route.php?data=$1 [L]
然后查看$ _GET ['data']中的内容,这可以为您提供有关您的规则未进行定位的线索。如果它不起作用,AllowOverride无效。通过.htaccess中的拼写错误指令进行确认,对apache没有任何影响。
如果你确实得到了字符串,请尝试用更严格的规则替换它。
关于第二个问题,你可以这样做
list($id,$rest)=explode('-',$_GET['data'],2);
或者,你可以让你的正则表达式将你的URL的不同部分选择为不同的变量$ 2 $ 3等。