动态.htaccess规则-重定向根目录

yzuktlbb  于 2023-01-13  发布在  其他
关注(0)|答案(2)|浏览(201)

我需要一些帮助来将静态.htaccess规则转换为动态规则。下面是规则的定义:

#Redirect the request of file inside folder 'agencias/pagina_agencia/' to the base root URL
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.avantitecnologiati.com.br
RewriteRule ^teste2 agencias/pagina_agencia/teste2.php [L,QSA]

每当有人请求该页面时:[www.avantitecnologiati.com.br/teste2] htaccess规则会自动读取名为“teste2.php”的文件,该文件位于以下路径:[www.avantitecnologiati.com.br/agencia/pagina_agencia/teste2.php]一切正常吗?
不,我有两个问题;(
1.我需要创建一个新的行,每次我添加一个新的文件在文件夹内称为“agencias/pagina_agencia/",类似于:

RewriteRule ^teste3 agencias/pagina_agencia/teste3.php [L,QSA]

这是不起作用的,因为我要在文件夹“目录”内创建10 k文件...
1.如果用户直接请求[www.avantitecnologiati.com.br/agencias/pagina_agencia/teste2],则需要重定向到页面[www.avantitecnologiati.com.br/teste2],并且不会显示真实的位置...
感谢您抽出时间阅读我的问题;)
完整HTACCESS代码

RewriteEngine On
RewriteCond %{SERVER_PORT} 443
RewriteRule ^(.*)$ avantitecnologiati.com.br$1 [R=301,L]

RewriteBase /
RewriteCond %{HTTP_HOST} ^www.avantitecnologiati.com.br
RewriteRule ^teste2 agencias/pagina_agencia/teste2.php [L,QSA]
RewriteRule ^teste3 agencias/pagina_agencia/teste3.php [L,QSA]

#Hide and Redirect Extension
RewriteEngine on 
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/shtml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

#Custom Error Page
ErrorDocument 404 http://www.avantitecnologiati.com.br/

我得到一个302错误时,尝试使用arkascha规则的,当我请求的网址:http://www.avantitecnologiati.com.br/它找不到文件;(

vbkedwbf

vbkedwbf1#

在你的网站根目录下,像这样写(见内嵌评论):

Options -MultiViews
RewriteEngine On

# external redirect rule to remove /agencias/pagina_agencia/ from URLs
RewriteCond %{THE_REQUEST} \s/+agencias/pagina_agencia/(\S*)\sHTTP [NC]
RewriteRule ^ /%1 [L,R=301]

# Remove .php extension externally
# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# internal rewrite from root to /agencias/pagina_agencia/
RewriteCond %{HTTP_HOST} avantitecnologiati [NC]
RewriteCond %{DOCUMENT_ROOT}/agencias/pagina_agencia/$1.php -f
RewriteRule ^([\w-]+)/?$ agencias/pagina_agencia/$1.php [L]

# handle .php extension internally
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

有关在HTML中包含资源的相对URL的注意事项:

当你切换到漂亮的URL模式时,你可能会遇到最常见的问题,即使用相对路径时找不到资源。简单的解决方案是在css,js,images文件中使用绝对路径,而不是相对路径。这意味着你必须确保这些文件的路径以http://或斜杠/开头。

否则您可以将其添加到页面HTML的<head>标记下方:<base href="/" />,这样每个相对URL都是从该基URL而不是从当前页面的URL解析的。

qf9go6mv

qf9go6mv2#

这可能就是你要找的:

RewriteEngine on
RewriteRule ^/?directory/([^/]+)\.php$ /$1 [R=301,L]
RewriteCond %{REQUEST_URI} !^/directory/
RewriteRule ^ /directory%{REQUEST_URI}.php [L]

最好从R=302 * temporary * 重定向开始,并且只有在一切正常工作后才将其更改为R=301 * permanent * 重定向。这样可以防止严重的缓存问题...

相关问题