Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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_Url Rewriting - Fatal编程技术网

Php 使用.htaccess重写Mod

Php 使用.htaccess重写Mod,php,.htaccess,mod-rewrite,url-rewriting,Php,.htaccess,Mod Rewrite,Url Rewriting,我正试图使用此信息[从网站复制]重写我的模式,但它不起作用。。有什么问题,请给出正确答案 Apache重写引擎主要用于将动态url(如www.yoursite.com/product.php?id=123)转换为静态且用户友好的url(如www.yoursite.com/product/123) RewriteEngine on RewriteRule ^product/([^/.]+)/?$ product.php?id=$1 [L] 另一个示例,重写自: www.yoursite.com/

我正试图使用此信息[从网站复制]重写我的模式,但它不起作用。。有什么问题,请给出正确答案

Apache重写引擎主要用于将动态url(如www.yoursite.com/product.php?id=123)转换为静态且用户友好的url(如www.yoursite.com/product/123)

RewriteEngine on
RewriteRule ^product/([^/.]+)/?$ product.php?id=$1 [L]
另一个示例,重写自:

www.yoursite.com/script.php?product=123至www.yoursite.com/cat/product/123/

RewriteRule cat/(.*)/(.*)/$ /script.php?$1=$2
试一试

试一试


您似乎误解了重写模块(特别是您的规则)的实际功能

非常简单,当您浏览到:

 localhost/abc/product.php?id=23
重写规则未被调用,不应执行任何操作。这里没有问题,您只是浏览到了错误的URL

URL转换 正则表达式是:
^product/([^/]+)/?$

新的url:
product.php?id=$1

选项:
[L]

这意味着用户浏览到nice url
http://www.yoursite.com/product/123
(您的所有链接都指向nice URL),然后服务器根据正则表达式进行匹配,并将其转换为只有服务器才能看到的新URL

实际上,这意味着您有两个指向同一页面的URL。。。好的URL和不好的URL都会把你带到同一个地方。不同的是,不好的/标准的URL对公众和其他追求你的网站的人是隐藏的


正则表达式
http://mysite.com/product/image.jpg
没有被重定向是因为您在
重写规则中使用了正则表达式

解释
  • ^
    =>字符串的开头
  • product/
    =>匹配文本字符串
    product/
  • ([^/]+)
    =>在下一个
    /
    之前匹配一个或多个字符的捕获组
  • /?$
    =>匹配可选的
    /
    ,后跟字符串的结尾
给定URL:

http://mysite.com/product/image.jpg
您的正则表达式匹配
产品/图像
,但随后遇到
,从而停止匹配。。。因为这不是字符串
$
的结尾,所以规则无效,因此转换永远不会发生

您可以通过将字符类
[^/]
更改为仅
[^/]
或-我的首选方法-删除字符类,只需使用
+
(不管怎样,只要将所有内容捕获到字符串末尾即可)

RewriteRule ^product/([^/]+)/?$ product.php?id=$1 [L]
RewriteRule ^product/(.+)/?$ product.php?id=$1 [L]

您似乎误解了重写模块(特别是您的规则)的实际功能

非常简单,当您浏览到:

 localhost/abc/product.php?id=23
重写规则没有被调用,也不应该执行任何操作。这里没有任何错误,您只是浏览到错误的URL

URL转换 正则表达式是:
^product/([^/]+)/?$

新的url:
product.php?id=$1

选项:
[L]

这意味着用户浏览到nice url
http://www.yoursite.com/product/123
(您的所有链接都指向nice URL),然后服务器根据正则表达式进行匹配,并将其转换为只有服务器才能看到的新URL

实际上,这意味着你有两个指向同一页面的URL…好的URL和不好的URL都会将你带到同一个地方。区别在于不好的/标准的URL对公众和其他追求你的网站的人是隐藏的


正则表达式
http://mysite.com/product/image.jpg
没有被重定向是因为您在
重写规则中使用了正则表达式

解释
  • ^
    =>字符串的开头
  • product/
    =>匹配文本字符串
    product/
  • ([^/]+)
    =>在下一个
    /
    之前匹配一个或多个字符的捕获组
  • /?$
    =>匹配可选的
    /
    ,后跟字符串的结尾
给定URL:

http://mysite.com/product/image.jpg
您的正则表达式匹配
产品/图像
,但随后遇到
,从而停止匹配…因为这不是字符串的结尾
$
规则无效,因此转换永远不会发生

您可以通过将字符类
[^/]
更改为仅
[^/]
或-我的首选方法-删除字符类,只需使用
+
(不管怎样,只要将所有内容捕获到字符串末尾即可)

RewriteRule ^product/([^/]+)/?$ product.php?id=$1 [L]
RewriteRule ^product/(.+)/?$ product.php?id=$1 [L]

嗯,你是如何在你的网站上使用它的?当前的URL看起来像什么?从一个网站复制代码并期望我们修复它不是这样的。请提供有关你的设置和你在本地wampserver中尝试的内容的信息,但是当我访问localhost/abc/product.php时什么都没有发生?id=23,它没有改变。你启用了该模式吗在apache中为WAMP编写模块?是的,我启用了它。启用后您是否重新启动了WAMP?只是试图消除任何导致WAMP的小问题?您如何在您的站点中使用它?当前URL是什么样子的等?从站点复制代码并期望我们修复它不是如何工作的。请提供有关您的设置和您所做工作的信息iedi正在本地wampserver中尝试,但当我访问localhost/abc/product.php时,什么都没有发生?id=23,这没有改变您在apache中为WAMP启用了ModRewrite模块吗?是的,我启用了,我启用了。启用后您重新启动了WAMP吗?只是试图消除导致它的任何小问题我使用了它,但它仍然不起作用。(:'(,什么都没有发生?但是什么不起作用?您是否收到错误?它是否显示了页面?您确定您正在根据$id变量获取项目信息吗?没有错误,页面加载应该是这样的..好像此代码没有任何效果,没有错误,没有更改,我应该在哪里单击
RewriteRule ^product/([^/]+)/?$ product.php?id=$1 [L]
RewriteRule ^product/(.+)/?$ product.php?id=$1 [L]