是的,我已阅读Apache手册并在此搜索.出于某种原因,我根本无法让这个工作.我最接近的是删除扩展名,但它指向根目录.我希望这只是在包含该.htaccess文件的目录中工作.
我需要对.htaccess文件做三件事.
我需要它来删除.php
一个.我有几个页面使用选项卡,URL看起来像page.php #tab - 这可能吗?
湾 我有一个页面使用附加到URL的会话ID,以确保您来自正确的地方,www.domain.com/download-software.php?abcdefg.
这可能吗?另外,在执行此操作时,是否需要从头文件导航包含文件中的链接中删除".php"?应该IE "<a href="support.php">support</a>" be <a href="support">support</a>?
domain.com,但是www.domain.com/page.我会继续寻找,尝试等等.会在子目录中导致任何问题吗?
我在mywebsite.com/laravel/下创建了一个Laravel项目.当我去mywebsite.com/laravel/test时,一切正常,但是当我访问mywebsite.com/laravel/test/时,我被重定向到mywebsite.com/test.
我有文件的index.php和的.htaccess在我的/ laravel目录.这是我的.htaccess文件:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteBase /laravel
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么RewriteBase不起作用.我试过/ laravel,/ laravel /和laravel ; 没有用.
我的routes.php文件
<?php
Route::get('/test/{name?}', 'MainController@index');
Route::group(['middleware' => ['web']], function () {
// …Run Code Online (Sandbox Code Playgroud) NextJS 导出一个静态站点,结构如下:
|-- index.html
|-- article.html
|-- tag.html
|-- article
| |-- somearticle.html
| \-- anotherarticle.html
\-- tag
|-- tag1.html
\-- tag2.html
Run Code Online (Sandbox Code Playgroud)
我正在使用 .htaccess 文件来隐藏 .html 扩展名:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
Run Code Online (Sandbox Code Playgroud)
一切正常,除了:
domain/article它会显示 article.html 页面,但我的地址栏显示domain/article<--Good。domain/article/注意尾部斜杠),其中列出了文章目录的内容 <--Bad(与标签相同)domain/article将我带到domain/article/而不是在article.html没有.html扩展名的情况下显示。所以...
article\index.html在根目录下创建一个而不是一个文件不是更好吗?)我尝试使用exportTrailingSlash似乎相关的方法,但这产生了其他问题,例如在我所有链接的末尾总是有一个斜杠:
例如:如果我去domain/article/somearticle点击刷新,一些东西(.httaccess?)/在最后添加一个给我domain/article/somearticle/不可怕,只是不是很干净和不一致...... …
我对整个.htaccess事情都很陌生,我一直在尝试修改它,这样我的链接就不会在各自的URL末尾有斜杠.我的网站是filmblurb.org.
Wordpress开始和结束的.htaccess代码如下所示:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Run Code Online (Sandbox Code Playgroud)
如果有人能够指导我如何解决这个问题,我将不胜感激.谢谢.
我怎样才能在我的 htaccess 中拥有这个:
/page.php => redirects to /page
/page => shows the page.php
/index => redirects to root
Run Code Online (Sandbox Code Playgroud)
以及如何从所有 URL(特别是根 URL)中删除尾部斜杠?
虽然我对 Apache 配置不太熟悉,但我可以找到这些代码:
# To remove .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# To remove trailing slashes
RewriteRule ^(.*)/$ /$1 [L,R=301]
# To redirect /index to root (not sure if it works correctly)
RewriteCond %{THE_REQUEST} ^.*/index
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
您能帮我解决这个场景并将其写成一小段代码吗?
谢谢
根据答案,我可以使用 .htaccess 文件中的以下代码解决问题:
# To remove .php extension
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\ …Run Code Online (Sandbox Code Playgroud) 我在尝试从apache中的查询字符串末尾删除尾部斜杠时遇到问题.
我现在有以下重写规则,以使URL和查询字符串全部小写:
RewriteEngine On
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* [OR]
RewriteCond %{QUERY_STRING} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}}?${lc:%{QUERY_STRING}} [L,R=301]
Run Code Online (Sandbox Code Playgroud)
我试图添加:
RewriteCond %{QUERY_STRING} (.+)/$
RewriteRule ^ %1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
但它破坏了网站.我一直在寻找一种方法来做到这一点,但尚未提出任何解决方案.我试过这篇文章的答案,但他们没有用.
我需要这样做的原因是因为我们的应用程序防火墙在URL中查找"ID",如果之后有任何非字母数字字符,则它会阻止请求.防火墙是在Apache请求到达服务器后实现的.
希望有更多Apache Rewrite规则经验的人可以帮助我.提前致谢.