Php .htaccess搜索引擎&;用户友好的URL';s 场地结构: 立地根 /桌面/-查看domain.com上的所有内容 /移动/-在m.domain.com上看到的一切 /Admin/-查看Admin.domain.com上的所有内容 .htaccess

Php .htaccess搜索引擎&;用户友好的URL';s 场地结构: 立地根 /桌面/-查看domain.com上的所有内容 /移动/-在m.domain.com上看到的一切 /Admin/-查看Admin.domain.com上的所有内容 .htaccess,php,.htaccess,Php,.htaccess,我已尝试将其放置在站点根目录和/Desktop/中 问题 我已经建立了一个测试页面domain.com/company.php,里面有helloworld 前往: “你好世界”展览 前往: 404页显示 问题: 如何使我的URL搜索引擎和用户友好,company的所有前面的“页面”显示company.php模板?您的选项应该是options+FollowSymLinks——但不确定这是否会影响结果。你的前斜杠也应该逃脱。请尝试regex101.com进行测试 请参见您的选项应该是选项+Follo

我已尝试将其放置在
站点根目录
/Desktop/

问题 我已经建立了一个测试页面
domain.com/company.php
,里面有
helloworld

前往:

“你好世界”展览

前往:

404页显示

问题:
如何使我的URL搜索引擎和用户友好,
company
的所有前面的“页面”显示
company.php
模板?

您的选项应该是
options+FollowSymLinks
——但不确定这是否会影响结果。你的前斜杠也应该逃脱。请尝试regex101.com进行测试


请参见您的选项应该是
选项+FollowSymLinks
——但不确定这是否会影响结果。你的前斜杠也应该逃脱。请尝试regex101.com进行测试


请参见解决方案1

您可以通过如下方式创建.htaccess文件来处理index.php中的所有URI(因此您可以根据需要处理任何参数和其他好处):

并使用
explode(“/”,$\u SERVER['REQUEST\u URI'])访问参数
,您可以包括company.php

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond &{REQUEST_FILENAME} !-d
RewriteRule ^company\/([-_a-zA-Z0-9]*)\/([-_a-zA-Z0-9]*)$ company.php?company_id=$1&name=$2[QSA,NC,L]
解决方案2

您可以为company.php创建一个特殊句柄

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond &{REQUEST_FILENAME} !-d
RewriteRule ^company\/([-_a-zA-Z0-9]*)\/([-_a-zA-Z0-9]*)$ company.php?company_id=$1&name=$2[QSA,NC,L]

解决方案2没有捕获第一个url参数,因为GET查询是针对company.php的特殊查询

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond &{REQUEST_FILENAME} !-d
RewriteRule ^company\/([-_a-zA-Z0-9]*)\/([-_a-zA-Z0-9]*)$ company.php?company_id=$1&name=$2[QSA,NC,L]
您可以通过如下方式创建.htaccess文件来处理index.php中的所有URI(因此您可以根据需要处理任何参数和其他好处):

并使用
explode(“/”,$\u SERVER['REQUEST\u URI'])访问参数
,您可以包括company.php

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond &{REQUEST_FILENAME} !-d
RewriteRule ^company\/([-_a-zA-Z0-9]*)\/([-_a-zA-Z0-9]*)$ company.php?company_id=$1&name=$2[QSA,NC,L]
解决方案2

您可以为company.php创建一个特殊句柄

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond &{REQUEST_FILENAME} !-d
RewriteRule ^company\/([-_a-zA-Z0-9]*)\/([-_a-zA-Z0-9]*)$ company.php?company_id=$1&name=$2[QSA,NC,L]

解决方案2没有捕获第一个url参数,因为您的GET查询对于company.php

Cleaner版本来说是特殊的:需要记住的是,您可能需要使用路由器,否则您将不得不编写许多重写。。。例如,如果用户想转到“/company”或“/companys”查看列表页面,该怎么办?哇,这看起来是一个非常高级的有用的源链接。我不太明白,但我想我明白你的意思。比如当我想要forums.php和company.php以及this.php时,像laravel这样的框架就派上了用场,它允许你定义路由等等。您可以使用/company.php-这没关系,但它与您查看单个公司时所做的操作不一致。更清晰的版本:需要记住的是,您可能需要使用路由器,否则您将不得不编写许多重写。。。例如,如果用户想转到“/company”或“/companys”查看列表页面,该怎么办?哇,这看起来是一个非常高级的有用的源链接。我不太明白,但我想我明白你的意思。比如当我想要forums.php和company.php以及this.php时,像laravel这样的框架就派上了用场,它允许你定义路由等等。您可以使用/company.php——这没关系,但这与您查看单个公司的操作不一致。我不熟悉这种方法,即不创建页面负载,让php通过数据库表为您创建所有页面。因此,如果我想要tutorials.php、forums.php、this.php和that.php都有不同的模板,我会使用第二个解决方案创建多个
RewriteRule
,如果不是,你能在第一个解决方案上展开一点吗?如果你要使用不同的模板,你肯定应该使用第一个解决方案。在一个页面内处理所有请求将为您提供真正灵活的代码。无论如何,正如您所知,我们正在使用
explode分解URI(“/”…
这意味着,如果我要加载一个文件,该文件名是从explode函数返回的数组的第一项。因此,您可以轻松地包含该文件,并使用其他分解项作为页面的参数。此外,您还可以查看该文件以了解一个想法:如果您不明白该做什么,我将很乐意提供更多帮助。请您访问eexplain
^(.*)$index.php/$1[QSA,NC,L]
index.php/$1
是如何指
this.php
还是
that.php
?我需要一个
index.php
的地方,还是我可以上传像
company.php
users.php
之类的模板?我不熟悉这种不创建页面负载并让php为其创建所有页面的方法因此,如果我想要tutorials.php、forums.php、this.php和that.php都有不同的模板,我会使用第二个解决方案创建多个
重写规则
,如果不是,你能在第一个解决方案上展开一点吗?如果你要使用不同的模板,你肯定应该使用第一个解决方案。H在一个页面内处理所有请求将为您提供真正灵活的代码(“/”…这意味着,如果我要加载一个文件,该文件名是从explode函数返回的数组的第一项。因此,您可以轻松地包含该文件,并使用其他分解项作为页面的参数。此外,您还可以查看该文件以了解一个想法:如果您不明白该做什么,我将很乐意提供更多帮助。请您访问explain
^(.*)$index.php/$1[QSA,NC,L]
index.php/$1
是如何指像
this.php
that.php
这样的东西的?我需要一个
index.php
的地方,还是我可以上传像
company.php
users.php
之类的模板?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond &{REQUEST_FILENAME} !-d
RewriteRule ^company\/([-_a-zA-Z0-9]*)\/([-_a-zA-Z0-9]*)$ company.php?company_id=$1&name=$2[QSA,NC,L]