通过.htaccess从URL剪切文件夹路径

时间:2017-02-13 00:17:17

标签: php .htaccess

我正在尝试缩短我的网址,但遗憾的是找不到任何有用的内容。

我将我的代码分成文件夹。索引位于root,就像我的.htaccess一样。 文件夹的名称类似于文件扩展名,因此php,js,css [...]

我有以下链接:

localhost/php/getBets.php

并希望它是

localhost/getBets/

我已经有了最后剪切.php扩展名的部分,所以这是我的全部.htacces

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# Hide Index
IndexIgnore *

# Forbid accessing certain sites
RedirectMatch 403 ^/.gitignore$
RedirectMatch 403 ^/.htaccess$
RewriteRule ^(?!index)(?!.*getBets).*\.(php|rb|py|txt|md|sql|inc)$ - [F,L,NC]

# Hide .php file ending in URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

有人可以告诉我如何实现这一目标吗? :) 非常感谢!

2 个答案:

答案 0 :(得分:2)

对于您所需的网址,您可以在根目录中使用以下规则进行重写,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/$ php/$1.php [L]

答案 1 :(得分:0)

Actualy Apache仍然没有pathinfo($,PATHINFO_DIRNAME),函数就像PHP一样。

使用%{REQUEST_URI},如下例所示:

RewriteRule ^(.+)/$ /path-dirname/$1 [R=301,L]

可能会重置:

RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^.+/$ %1 [R=301,L]