Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.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
Apache 使用mod_Rewrite在PHP中重写URL_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache 使用mod_Rewrite在PHP中重写URL

Apache 使用mod_Rewrite在PHP中重写URL,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,web服务器是Apache。我想重写URL,这样用户就不知道实际的目录了。例如: 原始URL: 预期URL: 如何使用?您需要定义一个重写规则,该规则应与以下类似: RewriteRule ^/(.*)/en/piecework/(.*)piecework_id=([0-9]+)(.*) piecework.mydomainname.com/en/$3 并将其放入网站主文件夹下的.htaccess文件中 此处对重写规则的完整描述: 编辑 在我的规则中犯了一个错误,希望我能纠正它。我在这里找到了

web服务器是Apache。我想重写URL,这样用户就不知道实际的目录了。例如: 原始URL:

预期URL:


如何使用?

您需要定义一个重写规则,该规则应与以下类似:

RewriteRule ^/(.*)/en/piecework/(.*)piecework_id=([0-9]+)(.*) piecework.mydomainname.com/en/$3
并将其放入网站主文件夹下的.htaccess文件中

此处对重写规则的完整描述:

编辑


在我的规则中犯了一个错误,希望我能纠正它。

我在这里找到了一个写得相当好的速成课程:


您需要在站点根目录的.htaccess中指定规则。

我建议使用以下规则:

RewriteCond %{HTTP_HOST} ^(?!www)([^.]+)\.mydomainname\.com$ [NC]
RewriteRule ^(w+)/(\d+)$ /$1/%1/%1.php?%1_id=$2 [L]

与PHP无关。您想要的功能全部使用.htaccess文件。PHP在被重定向之前不会处理任何事情。我会帮忙的,但是我没有鼠标使用这个垃圾触摸板睡觉。谢谢你的编辑。关于/en/piecework/piecework.php呢?soemthing=10&piecework\u id=11&somethingelse=12谢谢你指出错误@Steven$2表示使用此规则解析字符串时得到的第二组注册表项,即:第二组。*事实上,您需要的是[0-9]+,这是$3I引用的第三组。我已在我的站点根目录中指定了规则writerule^/*/en/piecework/*piecework\u id=[0-9]+.*piecework.mydomainname.com/en/$3 in.htaccess,但是当我访问piecework.mydomainname.com/en/11时,找不到对象。怎么了?您在Apache配置文件中启用了.htaccess文件了吗?我在我的站点根目录中指定了规则writerule^/*/en/piecework/*piecework\u id=[0-9]+.*piecework.mydomainname.com/en/$3 in.htaccess,但是当我访问时,我找不到对象。我已指定RulesWriteSecond%{HTTP_HOST}^?!www[^.]+\.mydomainname\.com$[NC]RewriteRule^w+/\d+$/$1/%1/%1.php?%1\u id=$2[L]in.htaccess在我的站点根目录中,但是当我访问piecework.mydomainname.com/en/11时,我找不到对象。怎么了?对不起,我打印错误。像这样试试:重写cond%{HTTP_HOST}^?!www[^.]+\.mydomainname\.com$[NC]RewriteRule^\w+/\d+$/$1/%1/%1.php?%1\u id=$2[L]
RewriteRule ^/(.*)/en/piecework/(.*)piecework_id=([0-9]+)(.*) piecework.mydomainname.com/en/$3
RewriteCond %{HTTP_HOST} ^(?!www)([^.]+)\.mydomainname\.com$ [NC]
RewriteRule ^(w+)/(\d+)$ /$1/%1/%1.php?%1_id=$2 [L]