【发布时间】:2018-04-05 23:34:50
【问题描述】:
最近我改变了我网站的工作方式 - 每篇文章的物理页面与没有物理(子)页面的动态加载内容,但我意识到我不能简单地上传新网站文件,因为我会破坏所有社交平台共享链接、计数器和内容,因为实际上有数千个子页面。
我听说(我知道)通过 .htaccess 和 RewriteEngine(我需要使用 RewriteEngine,因为 htaccess 中的所有代码都是为此编写的)我可以根据实际 URL 使页面在内部加载完全不同的东西,例如,例如,如果我有指向我的子页面之一的实际 URL 链接:
...所以在不更改 URL 文本的情况下,它会以不同的原则在内部加载我的新站点文件,如下所示:
现在我还需要这些变量“j”和“somearticle”是动态的,或者更好地说,它们需要完全按照地址栏中的物理 URL 复制(其中“somearticle”实际上是最初的物理 php 文件和“j”只是语言变量)因为它每次都会是别的东西,所以我不必为每个具体的子页面在 htaccess 中制作数千行 - 我需要一些通用代码会管理所有的子页面(因为原理都是一样的,只是改变了 php 名称,有时还有 language = variable "j"),你明白吗?
那么任何人都可以帮我告诉我实现这一目标的确切语法/代码吗?
编辑
所以我自己玩了一下,如果我手动设置子页面,这似乎可以工作(注意:只是一个澄清 - 这是我的 localhost:8081 因此我已经为我的服务器设置了第一个条件 cos不同的版本,具有不同的 index.php 路径)+ 我稍微更新了变量 j 部分 thanx 到 @Ben 的帖子:
# LOAD PAGE DIFFERENT INTERNALLY - LOCALHOST
RewriteCond %{HTTP_HOST} ^localhost:8081 [NC]
RewriteCond %{REQUEST_URI} /php/(.*)\.php$ [NC]
RewriteRule ^php/(.*).php$ /WWW/_PHP_/lego/index.php?s=$1 [QSA,L]
但不幸的是,由于某种原因它会影响我网站上的每个页面,而不仅仅是/php/下的页面,所以当我点击转到我的第一个(默认/初始 = index.php)页面时打破它(它包含所有文章的摘要 - 它们没有加载) - 有人知道为什么吗?
已解决
因此,在对@Ben 的代码进行小的更改之后,这是正确的解决方案,因此我将他的解决方案视为正确的解决方案(因为它实际上可以立即正常工作,因为如果页面在服务器上,因为我的测试版本在我的本地主机,其中 /php/ 目录的路径不同))
LOAD PAGE DIFFERENT INTERNALLY - localhost
RewriteCond %{HTTP_HOST} ^localhost:8081 [NC]
RewriteCond %{REQUEST_URI} /php/([a-zA-Z0-9\-]+).php [NC]
RewriteRule ^ index.php?s=%1 [QSA,L]
【问题讨论】:
标签: php .htaccess url redirect