繁体   English   中英

htaccess URL重写-在服务器上找不到请求的URL

[英]htaccess URL rewrite - requested URL not found on server

存在URL重写正在运行但服务器将不显示内容的问题。 我的.htaccess文件是

    RewriteEngine On
    RewriteBase /
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /project\.php [NC]
    RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
    RewriteRule . project-%1.html? [R=301]

谢谢你的帮助!

编辑:对不起,这是更多信息!

我想改写

    www.siteurl.co.uk/project.php?id=82

    www.siteurl.co.uk/project-82.html

.htaccess中的代码完美地重写了URL,但页面未显示。 我得到一个

    404 The requested URL /project-82.html was not found on this server. 

希望对您有所帮助!

您只有解决方案的一半,可以创建漂亮的URL。 剩下的是另一半,将漂亮的url发送到应用程序进行如下处理

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /project\.php [NC]
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule . project-%1.html? [R=301]

#you need this rule to process your www.siteurl.co.uk/project-82.html request
RewriteRule ^project-([0-9]+)\.html$ project.php?id=$1 [L,NC,QSA]

尝试把RewriteRule ^project-%1.html? [R=301]RewriteRule ^project-%1.html? [R=301] RewriteRule ^project-%1.html? [R=301]代替.

不知道“ [AZ] {3-9} \\”是干什么的? 也许我想念什么?

但也许是这样的:

RewriteCond %{THE_REQUEST} ^project\.php [NC]
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule . project-%1.html? [R=301]

要么

RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^/project\.php project-%1.html? [R=301]

请注意,这只是我的脑袋,我没有对其进行测试。

编辑:刚刚调整了第二个示例,其中有一个额外的斜杠,并在我的Web服务器上对其进行了测试(请注意,我使用的是IIS / URLRewrite,但应该相同):

RewriteBase /
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^project\.php project-%1.html? [R=301]

我输入了http://localhost/project.php?id = 123 ,它进入了http://localhost/project-123.html

但是我想我错过了一些事情...您说url重写正在起作用,并且url正在更改,但是您得到的是404? 在那种情况下,那么您的重写听起来就不错了-别的东西不允许您的html文件被访问(或者它们不存在)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM