javascript - 修改 .htaccess 文件后,网站的某些部分无法工作

标签 javascript jquery ajax .htaccess mod-rewrite

我刚刚实现了漂亮的 URL,取自这个问题:htaccess question

Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /

# Ensure www on all URLs.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [L,R=302]

# Ensure we are using HTTPS version of the site.
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

RewriteCond %{THE_REQUEST} \s/*(.*?)/index\.php [NC]
RewriteRule ^ %1/ [R=302,L]

RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1/ [R=302,L]

# Ensure all URLs have a trailing slash.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^.]*?[^/.]$ %{REQUEST_URI}/ [L,R=302]

# Remove all .php extensions without interfering with .js or .css.
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ $1.php [L]

但这在一些地方破坏了我的网站。在不是index.php的页面上,我必须添加完整的链接,例如<script src="https://www.example.com/js/bootstrap.min.js"></script>而不仅仅是<script src="/js/bootstrap.min.js"></script> ,这是最好的解决办法吗?

在我的 AJAX 代码上

$.fn.login_user = function () { var email = $('#login_email').val(), password = $('#login_password').val(), remember_me = $('input:checkbox:checked').val(); alert("test: " + email + " " + password); $.ajax({ type: 'POST', url: '../php/login.php', data: {email: email, password: password, remember_me: remember_me}, success: function (response) { alert(response); } }); };

jQuery 代码在同一个文件中运行,我在网站上有一个图像滚动器仍在工作,并且网站上的所有导航都在工作,但不是像这样的部分。在实现 .htaccess 来删除 .php 并添加尾随/之前,这个 AJAX 工作得很好,但现在它甚至还没有进入显示警报框的阶段。这个函数是从另一个文件中的一些 JavaScript 代码调用的,该代码仍然可以正常工作。

我的网站目录如下:

mysite.com - index.php
           - communications.php
           /php/ all php files here
           /js/ all js and jquery files here
           /css/ all css files here

最佳答案

像这样:

Options +FollowSymLinks
RewriteEngine On

# Ignore anything in js/css folders
RewriteRule ^(js|css)/ - [L,NC]

# Add www and turn on https in same rule
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]

# Adding a trailing slash
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301]

# Remove index.php externally
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]

# remove .php externally
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# Remove all .php extensions without interfering with .js or .css.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ $1.php [L]

在测试此更改之前,请确保完全清除浏览器缓存。

关于javascript - 修改 .htaccess 文件后,网站的某些部分无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40976710/

相关文章:

javascript - 引用对象及其后代时的 jQuery 速度

php - 如何保存和检索内容可编辑的数据

javascript - PhantomJS 的 Karma-grunt 测试用例失败

javascript - 如何在 Bootstrap 模式中从 MySQL 打开图像?

javascript - 如何使用同名元素的值

javascript - 在 Ajax 调用期间停止通过按钮单击/页面更改进入错误函数

javascript - 如何按值将数据传递到延迟 then 处理程序?

javascript - 在图像悬停时显示标尺并缩放它

javascript - 使用js添加html元素

javascript - 使 <a> 标签触摸友好