我将我的php文件存储在源目录中,所以当我想访问它们时,我必须输入完整的URL路径 http://example.com/source/login.php 。
如何在不移动源目录的文件的情况下将网址转换为 http://example.com/login ?
所以我可以访问www.example.com/login,其中login.php文件仍然位于源文件夹 (source / login.php)。
答案 0 :(得分:0)
我认为select to_char(to_date('092015','mmyyyy'),'mm/dd/yyyy') as dt from dual
dt
1 09/01/2015
的这种实现会做你想做的事情:
.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]
引擎以开始重写过程。
第二个块告诉浏览器执行状态为302的HTTP重定向,这意味着以我们返回的方式重复请求,在这种情况下mod_rewrite
没有扩展名。
第三个块告诉服务器接收无法找到的请求,例如没有/foo/bar
扩展名的文件,并在内部将请求重定向到foo/bar
扩展名的同一目录加入。
修改强>
我错过了原始答案中的最终重写要求。感谢@JoshJ指出修复。
答案 1 :(得分:0)
您必须使用htaccess规则。缩短"缩短"网址被称为" url重写"。复制以下代码并将其粘贴到localhost的根文件夹,文件名为" .htaccess"。
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=302,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
RewriteRule ^(.*?)/?$ source/$1.php
上面的代码基本上将url重写为您指定的url。它适用于所有相同模式的网址。
此外,您可能希望查看此博客文章以获取更多信息并面对常见问题。
http://www.askapache.com/htaccess/modrewrite-tips-tricks.html
快乐的黑客攻击
答案 2 :(得分:0)
它没有工作它给我一个500错误。我使用此代码修复了它。
Options -Multiviews
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)$ source/$1.php [L]