Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
Php 访问短url而不是长url_Php_.htaccess_Url - Fatal编程技术网

Php 访问短url而不是长url

Php 访问短url而不是长url,php,.htaccess,url,Php,.htaccess,Url,我将php文件存储在源目录中,因此当我想要访问它们时,我必须键入完整的url路径 如何在不从源目录移动文件的情况下将url转换为 因此,我可以访问www.example.com/login,其中login.php文件仍将位于源文件夹(source/login.php)。我认为.htaccess的此实现将满足您的要求: Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On ## hide .php e

我将php文件存储在源目录中,因此当我想要访问它们时,我必须键入完整的url路径

如何在不从源目录移动文件的情况下将url转换为


因此,我可以访问www.example.com/login,其中login.php文件仍将位于源文件夹(source/login.php)。

我认为
.htaccess
的此实现将满足您的要求:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

## hide .php extension
# To externally redirect /foo/bar.php to /foo/bar
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]

# To internally forward /foo/bar to /foo/bar.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ source/$1.php [L]
第一个块打开
mod_rewrite
引擎以开始重写过程

第二个块告诉浏览器执行HTTP重定向,状态为302,这意味着以我们返回的方式重复请求,在本例中为
/foo/bar
,不带扩展名

第三个块告诉服务器接受找不到的请求,例如没有扩展名的文件,如
foo/bar
,并在内部将请求重定向到添加了
.php
扩展名的同一目录

编辑:


我错过了原始答案中最后的重写要求。感谢您指出修复方法。

您必须使用htaccess规则。“缩短”url的过程称为“url重写”。复制以下代码并将其粘贴到本地主机的根文件夹中,文件名为“.htaccess”

上面的代码基本上将url重写为您指定的url。它适用于同一模式中的所有URL

此外,你可能想看看这篇博文,了解更多信息,并面对常见的困境


Happy Hack

它不起作用,它给了我500个错误。我用这个代码修复了它

Options -Multiviews

RewriteEngine On
RewriteBase /

RewriteRule ^([a-z]+)$ source/$1.php [L]

最后的规则应该是
RewriteRule^(.*?/?source/$1.php
,以满足OP的要求。@JoshJ感谢您的更新。我错过了最后一部分。编辑了答案并将修复归功于您。最终规则应为
RewriteRule^(.*?/?$source/$1.php
,以满足OP的要求。
Options -Multiviews

RewriteEngine On
RewriteBase /

RewriteRule ^([a-z]+)$ source/$1.php [L]