如何使用htacces文件隐藏php中的完整路径

如何使用htacces文件隐藏php中的完整路径,php,.htaccess,Php,.htaccess,我有一个名为social app的项目,其中包含以下结构: 包括 _login.php _profile.php 页 login.php profile.php 目前,如果我想访问任何类似profile.php的页面,我必须访问localhost/social app/pages/login.php,但我想修改它并将url更改为localhost/social app/login.php。基本上,我想去掉这些页面,让我的URL更干净一点如果所有的图片、CSS、JS和PHP页面都需要重写到/pag

我有一个名为social app的项目,其中包含以下结构:

包括 _login.php _profile.php 页 login.php profile.php 目前,如果我想访问任何类似profile.php的页面,我必须访问localhost/social app/pages/login.php,但我想修改它并将url更改为localhost/social app/login.php。基本上,我想去掉这些页面,让我的URL更干净一点

如果所有的图片、CSS、JS和PHP页面都需要重写到/pages子目录,那么您可以在/social app/.htaccess文件中使用mod_rewrite执行以下操作:

RewriteEngine On

RewriteRule !^pages/ pages%{REQUEST_URI} [L]
这将无条件地将尚未以pages/作为前缀的所有内容重写到pages子目录。例如/social-app/login.php在内部被重写为/social-app/pages/login.php

如果您在其他位置有不应重写的静态资源,则应包括文件系统检查,以防止已映射到现有文件的请求被重写。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^pages/ pages%{REQUEST_URI} [L]
如果您正在更改现有的URL结构,则需要重定向搜索引擎索引的旧URL,这些URL可能链接到第三方。例如,在进行上述重写之前,需要执行以下重定向:

RewriteBase /social-app

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^page/(.*) $1 [R=301,L]
如果所有内容(如图像、CSS、JS和PHP页面)都需要重写到/pages子目录,则可以使用mod_rewrite在/social app/.htaccess文件中执行以下操作:

RewriteEngine On

RewriteRule !^pages/ pages%{REQUEST_URI} [L]
这将无条件地将尚未以pages/作为前缀的所有内容重写到pages子目录。例如/social-app/login.php在内部被重写为/social-app/pages/login.php

如果您在其他位置有不应重写的静态资源,则应包括文件系统检查,以防止已映射到现有文件的请求被重写。例如:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^pages/ pages%{REQUEST_URI} [L]
如果您正在更改现有的URL结构,则需要重定向搜索引擎索引的旧URL,这些URL可能链接到第三方。例如,在进行上述重写之前,需要执行以下重定向:

RewriteBase /social-app

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^page/(.*) $1 [R=301,L]
在根目录的htaccess中,放置以下内容:

RewriteEngine on
RewriteRule ^social-app/login\.php$ /social-app/pages/login.php [L]
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/social-app/pages/$1.php -f
RewriteRule ^social-app/([^.]+)\.php$ /social-app/pages/$1.php [L]
现在,您只需键入/social app/login.php即可访问pages文件夹中的文件,而不必访问长URL

编辑:

要删除所有文件的目录名,可以使用以下命令:

RewriteEngine on
RewriteRule ^social-app/login\.php$ /social-app/pages/login.php [L]
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/social-app/pages/$1.php -f
RewriteRule ^social-app/([^.]+)\.php$ /social-app/pages/$1.php [L]
如果上述规则失败,则使用以下方法:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^social-app/(.+)\.php$ /social-app/pages/$1.php [L]
这将在内部将对/social-app/filename.php的请求映射到/social-app/pages/filename.php。

在您的htaccess根目录中,放置以下内容:

RewriteEngine on
RewriteRule ^social-app/login\.php$ /social-app/pages/login.php [L]
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/social-app/pages/$1.php -f
RewriteRule ^social-app/([^.]+)\.php$ /social-app/pages/$1.php [L]
现在,您只需键入/social app/login.php即可访问pages文件夹中的文件,而不必访问长URL

编辑:

要删除所有文件的目录名,可以使用以下命令:

RewriteEngine on
RewriteRule ^social-app/login\.php$ /social-app/pages/login.php [L]
RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/social-app/pages/$1.php -f
RewriteRule ^social-app/([^.]+)\.php$ /social-app/pages/$1.php [L]
如果上述规则失败,则使用以下方法:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^social-app/(.+)\.php$ /social-app/pages/$1.php [L]

这将在内部将对/social-app/filename.php的请求映射到/social-app/pages/filename.php。

您想要为您的站点定义一个虚拟主机-您想要为您的站点定义一个虚拟主机-谢谢您的回答。但我想为每个页面做同样的事情,而不仅仅是登录。你知道我怎么做吗?谢谢你的回答。但我想为每个页面做同样的事情,而不仅仅是登录。你知道我怎么做吗?