Htaccess mod_rewrite问题

时间:2011-09-17 12:06:41

标签: php .htaccess mod-rewrite

我有这个问题:

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]

关于第二个问题,它开始起作用了。谢谢!

3 个答案:

答案 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)

  1. 确保您没有“toute”目录。如果你这样做,请确保你没有优先的.htaccess。
  2. 创建规则匹配或确定。 RewriteRule ^(.*)$ route.php?data=$1 [L]然后查看$ _GET ['data']中的内容,这可以为您提供有关您的规则未进行定位的线索。
  3. 如果它不起作用,AllowOverride无效。通过.htaccess中的拼写错误指令进行确认,对apache没有任何影响。

    如果你确实得到了字符串,请尝试用更严格的规则替换它。


    关于第二个问题,你可以这样做

    list($id,$rest)=explode('-',$_GET['data'],2);
    

    或者,你可以让你的正则表达式将你的URL的不同部分选择为不同的变量$ 2 $ 3等。