Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Htaccess mod_重写问题_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php Htaccess mod_重写问题

Php Htaccess mod_重写问题,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我对此有疑问: RewriteEngine On RewriteRule ^tuote/([^/]+) tuote.php?data=$1 [L] 它应该将服务器端的所有tuote/Something更改为tuote.php?data=Something,但似乎不起作用($\u GET['data']没有值) 和其他问题: 我怎样才能让这个1-Something-title-nice-title变成php呢 $first_part = "1"; $secnd_part = "Something

我对此有疑问:

RewriteEngine On
RewriteRule ^tuote/([^/]+) tuote.php?data=$1 [L]
它应该将服务器端的所有
tuote/Something
更改为
tuote.php?data=Something
,但似乎不起作用(
$\u GET['data']
没有值)

和其他问题:
我怎样才能让这个
1-Something-title-nice-title
变成php呢

$first_part = "1";
$secnd_part = "Something-title-nice-title";
尝试爆炸,但在这种情况下不起作用

----编辑---
谢谢你的回复

我已将htaccess文件更改为:

RewriteEngine On
RewriteRule ^tuote/(.+) tuote.php?data=$1 [L]
但是,
$\u 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]

php_标志显示_错误1
AuthUserFile/var/www/somepath/.htpasswd
AuthGroupFile无
作者姓名“Kirjaudu sisän”
AuthType Basic
需要有效用户
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$$1.php[L,QSA]

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

在重写过程中,您所做的只是检查是否有1次或多次出现正斜杠。您需要将其更改为以下内容:

RewriteEngine On
RewriteRule ^tuote/(.+) tuote.php?data=$1 [L]
对于第二个问题,看起来您只是想制作一个字符串:

$both_parts = $first_part . "-" . $sednd_part;

RewriteRule
看起来不错——确保在PHP代码中正确访问查询字符串参数

至于你的另一个问题,添加一个
限制
来爆炸应该可以:

list($first_part, $second_part) = explode('-', $string, 2);
有关更多信息,请参阅PHP文档

  • 确保您没有目录“toute”。如果有,请确保其中没有优先使用的.htaccess
  • 创建规则匹配或确定
    RewriteRule^(.*)$route.php?data=$1[L]
    然后查看$\u GET['data']中的内容,这将为您提供有关规则未运行的原因的线索
  • 如果它不工作,AllowOverride也不工作。通过在.htaccess中拼写错误指令进行确认,对apache没有任何影响

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


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

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

    或者,您可以让regexp将URL的不同部分选择为不同的变量$2$3等。

    这不是“1次或多次出现正斜杠”,而是“1次或多次出现,但不是正斜杠”。现在我在那里添加了编辑部分,请查看它。RewriteRule^tuote\.php/(^/])tuote.php?data=$1[L]