2017-06-21 111 views
1

我的网站只是index.php,每一页都读取。我没有使用WordPress。htaccess会员重写规则

我正在寻找的是WordPress的页面结构。在Wordpress中,您可以设置重写规则,以便后续子目录可以将值传递至index.php

我有一个建立一个分支机构网络和基础URL一个客户端,例如:

mywebsite.com/?id=viktor 

他们希望解析URL的代替,它是为客户要简单得多。

mywebsite.com/u/viktor将'重写'到mywebsite.com/?id=viktor

什么是.htaccess规则或相关的PHP我不得不放在index.php

很明显,我们在该网站上没有“u”文件夹。 :)

感谢您的帮助。

This related question I believe has the code we're looking for however I'm not sure how it would apply in this situation

+0

联盟会员ID是什么格式?如果重写总是将用户带回到mywebsite.com主页,或者通过传递URL参数来请求用户? – BenM

+0

这是一个用户名,例如id = viktor,但我们不希望它重定向。当书签时,它仍然显示为mywebsite.com/u/viktor并将id变量传递给index.php – Viktor

回答

2

你可以这样说:如果你还需要保留所有现有的查询字符串(如/u/viktor?param=value

RewriteEngine On 
RewriteRule ^u/(.+)$ /?id=$1 [NE,L] 

,使用此:

RewriteEngine On 
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L] 

更新

那么使用相对URL是不好的做法(出于这个原因),但是如果你真的想避免更新你的所有代码,那很容易一个脚本或命令来完成,你可以这样做:

RewriteEngine On 
RewriteRule ^u/(.+/.+) /$1 [NE,L] 
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L] 

这将改写这是一个文件夹中引用/u/下根的一切。但是它破坏了浏览器缓存,因为所有的资源现在都有两个URL。真的,你应该只更新你的网址到绝对。

如果上述不为你工作,你只需要重写特定的文件夹,像这样做:

RewriteEngine On 
RewriteRule ^u/((?:assets|images|css)/.+) /$1 [NE,L] 
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L] 

更换您的文件夹名称为合适。

+0

然而,这仍然有效,但UNIX仍然将CSS看作“u”文件夹内的CSS,即href =“assets/css/custom-animations.css”,所以图像不被引用。我们必须进入并重做每一行代码,包括并添加一个/。有没有办法重写规则,但仍然将'目录'移回到根目录,即使我们把/ u/- 看到http://ufunnel.net/u/earthgrid - 你可以看到CSS和一切都不是'因为它认为它在'u'文件夹中。我们很近!!!!! – Viktor

+0

有没有比修改每个文件和页面的绝对相对引用更简单的方法? 例如 - 当你重写时 - 也退回一个目录,即../对于所有的引用。这是一个灵魂!谢谢你的帮助! – Viktor

+0

我添加了关于该更新。这不是UNIX,它是这样看的,它是网络浏览器。 – SuperDuperApps

1

你有问题就在这里,维克多,是WordPress的检查 URL时,它正在处理的请求。这是因为它有自己的mod_rewrite规则来重写所有内容到index.php

所以你不能用mod_rewrite做你想做的事情,因为WordPress不会去看你的重写的URL,并将它作为/u/viktor来处理。你可以用301重定向来做,但你已经说过你不想这样做。

为了使这个工作正常,你需要使用WordPress来使这些URL工作,也许创建一个插件来做到这一点。我不会向WordPress的index.php添加任何内容,因为它只会在WordPress更新时被覆盖。

+0

OP没有使用Wordpress,他们只是想做一些Wordpress正在使用的东西。 – Iceman

+1

所以我现在看到这个问题已经更新:)谢谢你的抬头。 – SuperDuperApps