Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用htaccess和php处理页面视图_Php_.htaccess_Mod Rewrite - Fatal编程技术网

使用htaccess和php处理页面视图

使用htaccess和php处理页面视图,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,目前,我正在附加以下url参数: www.somesite.com/?page_type=view 我的php脚本使用它来确定要加载的页面视图: if (isset($_GET['page_type'])) { $page_type = $_GET['page_type']; $this->pageType($page_type); } else { $this->home(); } 我希望能够使用以下url实现同样的目标: www.somesite.co

目前,我正在附加以下url参数:

www.somesite.com/?page_type=view
我的php脚本使用它来确定要加载的页面视图:

if (isset($_GET['page_type'])) {
    $page_type = $_GET['page_type'];
    $this->pageType($page_type);
} else {
    $this->home();
}
我希望能够使用以下url实现同样的目标:

www.somesite.com/view
因此,我需要将所有请求重定向到index.php,同时保持原始url输入

那我就可以用它了

$_SERVER['REQUEST_URI']
获取页面视图的名称

正在寻找一些访问建议


提前谢谢

您可以使用以下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

重新启动发动机
#重写基/
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$/index.php?url=$1[QSA,L]
这将把所有未解析为实际文件/目录的请求重定向到
index.php
?url=$1
将包含请求,但这在您的情况下可能是可选的,因为您仍然可以从
$\u服务器['request\u URI']
获取它


我在那里留下了一行
RewriteBase
(注释掉),因为取消注释可以帮助您进行服务器设置。

您可以使用以下内容:

<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
</IfModule>

重新启动发动机
#重写基/
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写规则^(.*)$/index.php?url=$1[QSA,L]
这将把所有未解析为实际文件/目录的请求重定向到
index.php
?url=$1
将包含请求,但这在您的情况下可能是可选的,因为您仍然可以从
$\u服务器['request\u URI']
获取它


我在那里留下了一行
RewriteBase
(注释掉),因为取消注释有助于进行服务器设置。

使用如下重写规则:

RewriteEngine On
RewriteRule /(home|view) index.php?page_type=$1
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?sef_rewrite=1 [L,QSA]

使用以下重写规则:

RewriteEngine On
RewriteRule /(home|view) index.php?page_type=$1
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?sef_rewrite=1 [L,QSA]

另一种选择是只需设置htaccess文件,将任何404(无法解决)请求重定向到索引文件中,并设置如下标志:

RewriteEngine On
RewriteRule /(home|view) index.php?page_type=$1
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?sef_rewrite=1 [L,QSA]
从这里,您可以使用PHP对$_服务器['REQUEST_URI']信息的访问来解析PHP中的内容,并根据需要将变量手动推送到$_requestsuperglobal中,以便将搜索引擎友好的链接“映射”到应用程序中

这比简单地在所有URL上强制使用/pagetypevar格式提供了更多的可伸缩性

如果要将页面嵌套到子类别中,以后会发生什么/信息/关于我们,信息/联系我们 如果要在url中存储其他变量(如每页项目数或分页),会发生什么情况/产品/1我的超级冷却项目,/products/2另一个项目


使用将所有未解析请求重定向到应用程序框架的系统,并允许应用程序框架重新映射URL,将为您提供最大的控制和最大的可伸缩性。

另一个选项是只需设置htaccess文件以重定向任何404(无法解析)使用如下设置的标志将请求写入索引文件:

RewriteEngine On
RewriteRule /(home|view) index.php?page_type=$1
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php?sef_rewrite=1 [L,QSA]
从这里,您可以使用PHP对$_服务器['REQUEST_URI']信息的访问来解析PHP中的内容,并根据需要将变量手动推送到$_requestsuperglobal中,以便将搜索引擎友好的链接“映射”到应用程序中

这比简单地在所有URL上强制使用/pagetypevar格式提供了更多的可伸缩性

如果要将页面嵌套到子类别中,以后会发生什么/信息/关于我们,信息/联系我们 如果要在url中存储其他变量(如每页项目数或分页),会发生什么情况/产品/1我的超级冷却项目,/products/2另一个项目


使用将所有未解决的请求重定向到应用程序框架的系统,并允许应用程序框架重新映射URL,将为您提供最大的控制和最大的可伸缩性。

非常感谢,工作非常顺利。感谢关于灵活性/可伸缩性的建议。事实证明,我的godaddy共享主机还有另一个问题,其中位于2级以上目录(从根目录)中的htaccess文件无法工作。也许是时候找一个新的主机提供商了。这实际上是服务器过载的主机上的一个常见问题。通过将apache配置为使用浅层htaccess支持,他们可以在服务器上填充一些额外的站点,以免降低性能。如果你想找一个比godaddy灵活一点但价格不会大幅上涨的人,我可以推荐hostgator.com。我以前曾与它们一起托管过一次性服务器/站点,因为它们具有很大的灵活性,而且不会带来巨大的附加成本;)非常感谢,非常好用。感谢关于灵活性/可伸缩性的建议。事实证明,我的godaddy共享主机还有另一个问题,其中位于2级以上目录(从根目录)中的htaccess文件无法工作。也许是时候找一个新的主机提供商了。这实际上是服务器过载的主机上的一个常见问题。通过将apache配置为使用浅层htaccess支持,他们可以在服务器上填充一些额外的站点,以免降低性能。如果你想找一个比godaddy灵活一点但价格不会大幅上涨的人,我可以推荐hostgator.com。我以前曾与它们一起托管过一次性服务器/站点,因为它们具有很大的灵活性,而且不会带来巨大的附加成本;)谢谢你的回答。我不得不把它交给布莱恩给他额外的建议。谢谢你的回答。不得不把它交给Brian,以获得额外的建议。感谢您的解决方案和解释。我想布赖恩是第一个到达那里的(我愿意接受这两个答案)。谢谢你的解答和解释。我认为布赖恩是第一个到达那里的(我愿意接受这两个答案)。