【问题标题】:.htaccess php Rewrite view.php?visopslag=(id).htaccess php 重写 view.php?visopslag=(id)
【发布时间】:2011-06-20 19:21:34
【问题描述】:

我必须用 htaccess 重写 www.url.com/opslag/view.php?visopslag=(id) 以获得更漂亮的东西 :o) 我正在创建一个论坛可能的应用程序。这就是我想要重写的内容: 我的要求是:

www.url.com/opslag/vis/id 

我该怎么做?我尝试了很多不同的方法,例如:

RewriteRule ^/opslag/([^/\.]+)/?$ view.php?vis=$1 [L]

我的完整 .htaccess:

RewriteEngine On  
"#Rewrite view.php?vis=id  
RewriteRule ^opslag/vis/([0-9]+)$ /opslag/view.php?vis=$1 [L,R,QSA]  

"#Remove index.php  
"#RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*index\.php\ HTTP/    
"#RewriteRule ^(.*)index\.php$ /$1 [R=301,L]  

"#Remove /page/      
"#RewriteCond %{REQUEST_FILENAME} !-f    
"#RewriteCond %{REQUEST_FILENAME} !-d    
"#RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]

【问题讨论】:

  • id 是否总是数字、字母数字等?它可以包括什么?
  • 只有数字.. 就像 1,2,42,100,1.. 总是一个数字.. 就像 Stackoverflows 中的 url: url.com/questions/123123/ 一样

标签: php .htaccess


【解决方案1】:

请备份您的 .htaccess 文件。现在删除所有行 - 将其设为空(目前那里有太多噪音)。

将这些行添加到您的空 .htaccess 中(应该在您网站的根文件夹中):

RewriteEngine On
RewriteRule ^opslag/vis/(\d+)$ /opslag/view.php?vis=$1 [NC,QSA,L] 

这应该将www.url.com/opslag/vis/11 视为www.url.com/opslag/view.php?vis=11

请确保opslag 文件夹中没有更多的.htaccess 文件。

【讨论】:

  • 这个工作@LazyOne :o) 现在我遇到了一个问题,我也需要其他的重写。删除 /page/ 的那个,因为我使用的是 CMS,我想用第三条规则删除 index.php。我该怎么做?
  • 好的开始。显示您当前拥有的 URL(您刚刚提到的那个)以及 URL 在重定向/重写后应该如何显示
  • 好的,我需要删除 www.url.com/**page**/ 我的链接是:href='/$rows[link]'
  • 在我使用这个之前:#Remove /page/ #RewriteCond %{REQUEST_FILENAME} !-f #RewriteCond %{REQUEST_FILENAME} !-d #RewriteRule ^([^/\.]+)/? $ index.php?page=$1 [L]
  • @LazyOne Dude,另外 2 个 RewriteRule 与您为我创建的那个完美结合。现在一切正常。谢谢你的帮助。 @Michael 谢谢你 2! :o)
【解决方案2】:

根据您目前提供的信息,我提供了这个。如果您提供更多信息,我会相应地进行修改。

RewriteBase /somedir
RewriteEngine On
RewriteRule ^opslag/vis/([0-9]+)$ /opslag/view.php?vis=$1 [L,R,QSA]

【讨论】:

  • 它不起作用。也许我应该告诉你,我的 htaccess 文件位于根目录中,而文件 view.php 位于子文件夹中。这有关系吗?
  • 尝试如上添加RewriteBase。还要临时添加[R] 标志([L,R,QSA]) 以查看它尝试重定向到的内容。
  • @Kolind 然后删除 RewriteBase。还可以尝试从^opslag 之前删除^
  • @Michael 好的,我现在知道了:RewriteRule ^opslag/vis/([0-9]+)$ view.php?vis=$1 [L,QSA,R] 这不起作用
  • 试图删除 ^ 并且不起作用。我必须将 /opslag 添加到 view.php 吗?像这样: RewriteRule ^opslag/vis/([0-9]+)$ /opslag/view.php?vis=$1 [L,QSA,R]
猜你喜欢
  • 1970-01-01
  • 2013-11-03
  • 2015-06-30
  • 2018-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
相关资源
最近更新 更多