我的网站只是index.php,每个页面都是从那里读取的。我没有使用WordPress。
我想要做的事情与WordPress的页面结构相同。在Wordpress中,您可以设置重写规则,以便后续子目录可以将值传递给index.php
。
我有一个正在构建联盟网络的客户端,基本URL就是:
mywebsite.com/?id=viktor
他们希望解析网址,以便让客户更加轻松。
即。 mywebsite.com/u/viktor
会重写'到mywebsite.com/?id=viktor
。
.htaccess
规则或关联的PHP必须放入index.php
?
显然我们没有“你好”。网站中的文件夹。 :)
感谢您的帮助。
答案 0 :(得分:2)
你可以这样做:
RewriteEngine On
RewriteRule ^u/(.+)$ /?id=$1 [NE,L]
如果您还需要保留任何现有的查询字符串(例如/u/viktor?param=value
),请使用:
RewriteEngine On
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L]
<强>更新强>
使用相对URL的错误做法(出于这个原因),但如果你真的想避免更新所有代码,这可以通过脚本或命令轻松完成,你可以这样做:< / p>
RewriteEngine On
RewriteRule ^u/(.+/.+) /$1 [NE,L]
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L]
这会将/u/
下的文件夹中引用的所有内容重写为root。但它打破了浏览器缓存,因为您的所有资源现在都有两个URL。实际上,您应该将您的网址更新为绝对网址。
如果上述内容对你不起作用而你只想重写特定文件夹,请按以下步骤操作:
RewriteEngine On
RewriteRule ^u/((?:assets|images|css)/.+) /$1 [NE,L]
RewriteRule ^u/(.+)$ /?id=$1 [NE,QSA,L]
根据需要更换文件夹名称。
答案 1 :(得分:1)
你在这里遇到的问题Viktor是WordPress在处理请求时检查原始 URL。这是因为它有自己的mod_rewrite规则来重写所有内容到index.php
。
因此,您无法使用mod_rewrite
执行所需操作,因为WordPress不会查看您重写的网址,并会将其作为/u/viktor
进行处理。你可以通过301重定向来实现,但你已经说过你不想这样做。
为了使其正常工作,您需要使用WordPress来使这些URL工作,也许创建一个插件来完成它。我不建议在WordPress的index.php
中添加任何内容,因为它只会在WordPress更新时被覆盖。