Php 使用.htaccess重写Mod
我正试图使用此信息[从网站复制]重写我的模式,但它不起作用。。有什么问题,请给出正确答案 Apache重写引擎主要用于将动态url(如www.yoursite.com/product.php?id=123)转换为静态且用户友好的url(如www.yoursite.com/product/123)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/
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 urlhttp://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 urlhttp://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]